在Java中所有类都是从Object这个类继承出来的
在面向对象基础案例中 Animal 虽然是“最顶级”的父类,但其实Object是所有类的父类
而Dog类 cat类 这样实际上是通过Animal来继承对象
另外 对象名.getClass() 可以获得此对象是从哪初始化的
Object并不是抽象类,因为它可以被所有类继承下来的方法都是先程序代码,所以没有必须被覆盖的方法
任何从ArrayList<Object>取出的东西都会被当做Object类型的引用而不管它原来是什么
例如:
1 ArrayList<Object> myDogArrayList = newArrayList<Object>(); 2 Dog aDog = new Dog(); 3 myDogArrayList.add(aDog) 4 5 //取出来的时候 6 Dog d = myDogArrayList.get(0) //报错 因为<object>
这样代码会报错,编译器无法确认它是Dog
如果我们在Animal中声明abstract(抽象)方法,那么所有的子类都得重写
在设计中会遇到这样一个问题 animal 有很多子类 其中有一批是兔子 猫等等 另一批是老虎.狮子 如果我们想给兔子,猫等加入一个play()的方法,一个个添加太麻烦,如果加到animal中,狮子和老虎怎么能接受呢? 这时候需要设计一个接口来实现了
1 public interface pet{ 2 public abstract void play(); //接口的方法一定是抽象的,所以必须以分号结束,记住它们没有内容 3 } 4 5 6 //......... 7 8 9 public class cat extends animal implement pet{ 10 public void play(){......} 11 public void eat(){......} //一般的覆盖方法 12 }
这样兔子猫都有animal中的方法也有了它们自己共同的方法
原文:https://www.cnblogs.com/qiuyehaha/p/13022016.html