JAVA_SE第十章 抽象类&接口&多态

一、抽象类

在声明类之前加 abstract关键字。
- 1)抽象类不能创建对象,只能被子类继承后创建;
- 2)抽象类中可以定义抽象方法,也可以不定义。抽象类的抽象方法也以abstract修饰,没有方法体{},只有方法名。
- 3)普通子类实现抽象父类,必须重写,实现抽象父类中的所有抽象方法。抽象子类剋不用。
- 4)abstract 不能与private, static, final一起使用。
- 5)抽象类可以正常创建访问器和构造方法,构造方法不用来创建对象,只用来被子类调用;
- 6)只有抽象类可以创建抽象方法,其他类不能创建
- 7)含有抽象方法的类(包括①直接定义了一个抽象方法;②继承了一个抽象父类,但没有完全实现包含的抽象方法;③实现了一个接口,但没有完全实现接口包含的抽象方法)只能被定义成抽象类。

abstract class tranfictool {
    属性
    构造方法;
    abstract 返回值类型 方法名();
    //抽象方法,没有大括号
    普通方法;

}

二、 接口

  • 1)接口中所有的成员都是public的
  • 2)接口不能创建对象,必须用实现类来继承后创建对象,实现类继承后必须实现接口中的所有抽象方法;
  • 3)实现类可以实现多个接口的功能,不同接口之间用逗号隔开;
  • 4)接口支持多继承,即一个接口可以继承多个接口,继承之后还是接口;
  • 5)对于接口中的静态方法,子接口和实现类不能继承
  • 6)多个接口中同名可的区分:

    ①静态方法用接口名区分;

    ②默认方法,实现类必须重写;
    调用区分:接口名.super.默认方法名()

    ③抽象方法,统一重写实现

抽象类和接口相同:

  • 1.都不能创建对象,使用时都需要用实现类来创建对象;
  • 2.都可以包含一些抽象方法;
  • 3.普通子类和都实现抽象父类和接口中的所有抽象方法;

抽象类和接口的不同

  • 1.子类只能继承一个抽象父类,但实现类可以实现多个接口的功能;
  • 2。接口自身可以多继承;
interface tranffic {
    常量;  public static final
    抽象方法; public abstract
    默认方法;
    静态方法;(静态内部类,接口,枚举)
    静态内部类型;
}
package day11;
//一个文件中只能有一个public的类或接口
//接口
interface threeElectric {
    void threeService(); //public abstract void 
}
interface twoElectric {
    void twoService(); //public abstract void 
}
interface Socket extends threeElectric,twoElectric {
    public abstract void socketService(); //相当于C里声明了一个函数
}
class Goods {
}
class IceBox implements threeElectric {
    public void threeService() {
        System.out.println("冰箱使用三相电通电了");
    }
}
class computer extends Goods implements threeElectric , twoElectric {
    public void threeService() {
        System.out.println("计算机本身通电了");
    }
    public void twoService() {
        System.out.println("外置扩音器通电了");
    }
    public void Socket(){
        System.out.println("插排供电");
    }
}

//实现类
public class duotaiTest {
    public static void main(String[] args) {
        jingdong jd = new jingdong();
        jd.webService();
    }
}

三、多态

  • 多态:父类的引用类型指向了子类的对象;或接口类型的引用类型变量指向了接口类型的变量。

多态:同一个引用类型,使用不同的实例而执行不同操作。

  • 包括1)类多态;2)接口多态;3)参数多态;
  • 特征:
  • 1.方法重写;
  • 2.父类引用指向子类对象;接口引用指向实现类。
  • 以多态的写法写时,子类特有的方法就用不成了。接口也是。

类型转换

  • 1.向上类型转换,直接转:
  • 子类–》父类:直接转:// aninal ani = new dog();
  • 2.向下转,强制转换:
    父类–》子类: 强制类型转化://dog d = (dog) ani;
  • PS :instanceof运算符:
  • if(对象1 instanceof 类1):
  • 判断对象1 是否是类1类型,返回boolean类型
  • 在强制类型转换之前,通过instanceof运算符检查对象的真是类型,可以避免类型转换异常,从而提高代码的健壮性。

四、 依赖体现在类作为方法的参数。

五、 聚合体现在类作为属性。

猜你喜欢

转载自blog.csdn.net/gegeyanxin/article/details/80558751