8.接口与多态

2017-09-20  本文已影响0人  ccc_74bd

抽象类

  1. 有些类不该被初始化(例如Animal,因为现实中没有Animal对象存在),为了防止Animal类被初始化,可以将其标记为抽象类——在类的声明前面加上抽象类关键词abstract


  2. 具体类——非抽象的类就是具体类
  3. 抽象的方法——除了类之外,也可以将方法标记成抽象的,抽象方法必须被覆盖过才能调用,抽象方法没有方法体——publicabstractvoideat();//没有{}
    如果要声明出一个抽象的方法,就必须将类也标记为抽象的,不能在非抽象类中拥有抽象方法
    必须实现所有抽象的方法——这表示在继承树下的第一个具体类必须要实现出所有的抽象方法
  4. Object类是所有类的父类
    每个对象都拥有的方法(可覆盖)
    A.equals(Objecto)——判断两个对象是否相等
    B.getClass()——告诉你该对象是什么类(从哪里被初始化的)
    C.hashCode()——列出该对象的哈希代码(对象唯一的ID)
    D.toString()——列出类的名称和一串我们不关心的数字
    任何从ArrayList<Object>取出的东西都会被当作Object类型的引用而不管它原来是什么
    当一个变量被声明为Object类型的对象所引用时,它无法再赋值给原来类型的变量
    编译器是根据引用类型(而不是对象类型)来判断有哪些method可以调用



    o作为Object的引用,只能调用Object的方法,而不能调用bark()方法
    越处于继承树的下端,遥控器的按钮(引用)越多,Object引用的对象按钮最少
    如果想要调用Dog类的方法,可以从Object中拷贝出一个Dog引用,并赋值给Dog引用变量

接口

使用接口的目的:接口可以实现多重继承又不会出现致命方块的问题
实现方法:把全部的方法设置为抽象的(接口就像是100%纯天然抽象类)
接口的定义:publicinterfacePet{...};
接口的实现:publicclassDogextendsCanineimplementsPet{...};
不同继承树的类也可以实现相同的接口
类可以实现多个接口
接口的方法都是publicabstract的(默认的)
要从子类调用父类的方法可以用super关键字

上一篇 下一篇

猜你喜欢

热点阅读