zoukankan      html  css  js  c++  java
  • 接口与多态

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

  • 相关阅读:
    物料描述不可更新(分配组织后)
    完工任务不允许更改需求
    作业需求更改,限制车间人员只允许修改子库
    只允许更改**类型的任务需求
    车间任务移动完工时检验倒冲子库
    有库存不能停用子库存
    不允许修改标准作业需求
    PHP关于重写与重载
    面向对象的三个基本特征 封装 继承 多态
    PHP中的面向对象 中的类(class)
  • 原文地址:https://www.cnblogs.com/qiuyehaha/p/13022016.html
Copyright © 2011-2022 走看看