首页 > 其他 > 详细

接口与多态

时间:2020-05-31 23:57:53      阅读:93      评论:0      收藏:0      [点我收藏+]

在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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!