多态:
多态的概念:
多态:事物的多种状态
对象的多态性:同一个对象,可能具有不同的名称,同一个对象,有不同类型的引用指向它,本质:同一个物体有不同的名称和描述。
类型的多态性:同一个类型,可能具有不同的子类实现。
多态的前提:
1.要有父子类的继承(实现)关系。
2.有方法的重写。
3.父类的引用指向子类的对象。
代码示例:
1 class Demo01_多态概述 { 2 public static void main(String[] args) { 3 Animal a = new Cat(); 4 a.speak(); 5 } 6 } 7 8 class Animal { 9 public void speak() { 10 System.out.println("动物发声"); 11 } 12 } 13 14 class Cat extends Animal { 15 @Override 16 public void speak() { 17 System.out.println("喵喵喵喵喵"); 18 } 19 }
在多态中成员变量的访问特点:
代码示例:
1 class Demo02_多态中成员变量访问特点 { 2 public static void main(String[] args) { 3 Animal a = new Cat(); 4 System.out.println(a.age); 5 System.out.println(a.color); 6 } 7 } 8 9 class Animal { 10 int age = 2; 11 } 12 13 class Cat extends Animal { 14 int age = 3; 15 String color = "black"; 16 }
向上向下转型:
使用父类的引用指向子类的对象
抽象类:
抽象方法:只有方法声明,而没有方法实现的方法,就叫抽象方法。
父类中的方法在子类中没有得到应用,但是为了规范方法的命名格式,父类中必须有这个方法,让子类来重写这个方法,父类中的方法没用,所以可以把它的方法体去掉,只留下
一个方法名,这种没有方法体的方法叫做抽象方法,抽象方法的修饰符为 abstract ,包含抽象方法的类为抽象类,抽象类也必须用abstract修饰。
抽象类的特点:
1.抽象类和抽象方法都需要用absract关键字来修饰。
2.抽象类和抽象方法的关系:
抽象方法所在的类必须是抽象类,
抽象类中未必存在抽象方法。
3.抽象类的实例化:
抽象类不能直接实例化,定义抽象类的子类,由子类来创建对象,调用方法。
抽象类子类:
在子类中,将父类的抽象方法全部重写(实现),子类就是一个普通类,可以创建对象
在子类中,没有将父类中的全部抽象方法全部实现,子类就还是一个抽象类,还需要abstract关键字类修饰子类。
- 用abstract修饰的类,叫做抽象类。
- 抽象类不能创建对象,因为类是不完整的。
- 抽象类的作用,是规范子类的方法和属性
- 抽象类可以写属性,可以写方法,也可以写抽象方法。
- 抽象方法必须在抽象类中
- 子类必须实现 抽象父类中的所有抽象方法
- 抽象类可以继承抽象类,可以不实现父类方法。
接口:
定义:java中用于定义方法命名的规范就是接口。
接口使用Interface关键字,编译也是生成一个.class文件
interface 接口名称{
方法声明的定义;
}
在接口中,只可以声明抽象方法(只能定义方法起名字的规则)
类可以实现接口,使用implements关键字
实现:接口中只有方法名称的定义,在类中把接口方法的真正完成逻辑写出来。
class 类名称 implements 接口名称{
对接口中方法的实现。
}
接口的实例化:不能直接实例化,定义实现类,实现接口,类创建对象,对象调用方法。
类与类 继承关系
类与接口 实现关系
接口与接口 继承关系
类只能继承一个类,但是类可以实现多个接口