• 接口与多态


    在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中的方法也有了它们自己共同的方法

  • 相关阅读:
    more命令
    mktemp命令
    有效的括号字符串
    mc命令
    字符串相加
    Vue中虚拟DOM的理解
    chattr命令
    记近一年线上项目经验及架构变更记录
    微博AnalysisQl动态数据视图元数据设计
    搭建prometheus+grafana监控SpringBoot应用入门
  • 原文地址:https://www.cnblogs.com/qiuyehaha/p/13022016.html
Copyright © 2020-2023  润新知