多态&抽象&接口

多态:

多态的概念:

多态:事物的多种状态

对象的多态性:同一个对象,可能具有不同的名称,同一个对象,有不同类型的引用指向它,本质:同一个物体有不同的名称和描述。

类型的多态性:同一个类型,可能具有不同的子类实现。

多态的前提:

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  接口名称{

  对接口中方法的实现。

}

接口的实例化:不能直接实例化,定义实现类,实现接口,类创建对象,对象调用方法。

类与类  继承关系

类与接口  实现关系

接口与接口  继承关系

类只能继承一个类,但是类可以实现多个接口

原文地址:https://www.cnblogs.com/ywzbky/p/10608176.html