面向对象第三天知识点总结
一.多态
前提:
1.有继承关系
2.有方法的重写
3.父类引用指向子类对象
调用关系:
当父类的引用指向子类的对象时;
调用同名的静态变量 -- 父类
调用同名的静态方法 -- 父类
调用同名的成员变量 -- 父类
调用同名的成员方法 -- 子类
子类独有的变量和方法不能被调用
二中转型:
向上转型:
Person p = new Teacher();
向下转型:
Teacher t = (Teacher)p;
二.抽象类:
抽象类的格式:
abstract 修饰符 返回值 方法名 (参数列表);
抽象类:用abstract修饰的类叫做抽象类;
1.抽象类中可以没有抽象方法,有抽象方法的类一定是抽象类;
2.抽象类不能创建对象,需要使用子类的向上转型
3.抽象类不能使用final修饰
4.抽象类中既可以定义常量 也可以定义变量
5.抽象类的子类要么实现抽象类所有的抽象方法,要么本身就是一个抽象类
6.抽象类中有构造方法
三.接口:interface
定义格式:
Interface 接口名 {}
特点:
1.接口中的所有方法都是抽象方法(JDK1.8以前),默认都有public abstract修饰
2.接口中只能定义常量 默认有 public static final修饰
3.接口本身不能创建对象 需要使用子类的向上转型
接口的子类:使用implements实现类接口的类
4.一个类可以实现多个接口
5.接口的子类要么实现了接口中多有的抽象方法 要么本身是一个抽象类
6.接口没有构造方法
7.接口只能继承接口 不能实现接口 接口支持多继承
8.JDK1.8以后接口中可以定义实现类 但必须要有 static 或者 default修饰
9.一个类可以同时继承一个类 实现多个接口
四.抽象类和接口的区别
1.一个类最多只能继承一个抽象类 但可以实现多个接口
2.抽象类中可以有非抽象方法,接口中都是抽象方法(JDK1.8之前)默认有public abstract修饰
3.抽象类中既可以定义常量 也可以定义变量 接口中只能定义常量 默认有public static final修饰
4.接口只能继承接口不能实现接口 并可以多继承