- 多态(重点)
生活中的多态:客观事物在人脑中的主观反应;也就是说对象与某个类间存在“is a”关系
例如:大黄是一条狗,也是一个动物,这种关系就是多态的形成
程序中的多态:父类引用指向子类对象,在程序中形成了多态
用法: 可以调用父类的方法,但是不能调用子类独有的方法
多态核心
//案例:大黄是一条狗,也是一个动物
//分析: 类: 狗类 动物类 对象: 大黄 方法: 动物类-吃 狗类-跑
class Animal{
public void eat() {
System.out.println("动物正在吃...");
}
}
class Dog extends Animal{
public void run() {
System.out.println("大黄正在跑...");
}
}
public class Test1 {
public static void main(String[] args) {
/*
Dog dog = new Dog(); //把狗当成狗类看待-->可以调子类自身方法,也可以根据继承调父类方法
dog.run();
dog.eat();
*/
Animal animal = new Dog(); //多态的核心-->把狗当成动物来看待,可以调动物类的方法,但狗类独有方法不能调用
animal.eat();
//animal.run(); //不能调子类独有方法
}
}
多态直接引用
//案例:大黄是一条狗,也是一个动物
//分析: 类: 狗类 动物类 对象: 大黄 方法: 动物类-吃 狗类-跑
//升级:狗类重写父类的方法,应该如何调用?
//多态的应用: 父类引用指向子类对象,优先调用子类重写的方法
//方式1:子类对象直接赋值给父类
class Animal2{
public void eat() {
System.out.println("动物正在吃...");
}
}
class Dog2 extends Animal2{
public void run() {
System.out.println("大黄正在跑...");
}
@Override
public void eat() {
System.out.println("大黄正在吃...");
}
}
public class Test2 {
public static void main(String[] args) {
Animal2 animal2 = new Dog2();
animal2.eat(); //父类引用指向子类对象,优先调用子类重写的方法
}
}
多态以传参方式出现
案例: