多态概述
- 多态是继封装、继承之后,面向对象的第三大特性。
- 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的同学张三既是学生也是人,即出现两种形态。
- Java作为面向对象的语言,同样可以描述一个事物的多种形态。如Student类继承了Person类,一个Student的对象便既是Student,又是Person。
多态的定义与使用格式
- 多态的定义格式:就是父类的引用变量指向子类对象
父类类型 变量名 = new 子类类型();
变量名.方法名();
- A:普通类多态定义的格式
父类 变量名 = new 子类();
如: class Fu {}
class Zi extends Fu {}
//类的多态使用
Fu f = new Zi();
- B:抽象类多态定义的格式
抽象类 变量名 = new 抽象类子类();
如: abstract class Fu {
public abstract void method();
}
class Zi extends Fu {
public void method(){
System.out.println(“重写父类抽象方法”);
}
}
//类的多态使用
Fu fu= new Zi();
- C:接口多态定义的格式
接口 变量名 = new 接口实现类();
如: interface Fu {
public abstract void method();
}
class Zi implements Fu {
public void method(){
System.out.println(“重写接口抽象方法”);
}
}
//接口的多态使用
Fu fu = new Zi();
package com.itheima_01;
/*
* 多态的前提
* 字符类的继承关系
* 方法的重写
* 父类引用指向子类对象
*
* 动态绑定:运行期间(右键):调用的方法,是根据其具体的类型
*
* 编译期间(程程class文件)
*/
public class PoymorphicDemo {
public static void main(String[] args) {
/* Cat c = new Cat();
c.eat();*/
//父类引用Animal a
//指向 =
//子类对象new Cat()
Animal a = new Cat();
a.eat();//猫吃鱼
}
}
class Animal {
public void eat() {
System.out.println("吃东西");
}
}
class Cat extends Animal {
public void eat() {
System.out.println("猫吃鱼");
}
}