多态概述:同一个对象,不同时刻表现出来的不同形态
可以说猫是猫 猫 cat=new 猫;
可以说猫是动物 动物 animal-new 猫;
多态前提和体现:
1.有继承/实现关系
2.有方法重写
3.有父类引用指向子类对象
多态的弊端:不能使用子类特有的功能
/*
多态概述:同一个对象,不同时刻表现出来的不同形态
可以说猫是猫 猫 cat=new 猫;
可以说猫是动物 动物 animal-new 猫;
多态前提和体现:
1.有继承/实现关系
2.有方法重写
3.有父类引用指向子类对象
多态的弊端:不能使用子类特有的功能
*/
public class Animal {
public int age =40;
public void eat() {
System.out.println("动物吃东西");
}
}
public class Cat extends Animal{
public int age=20;
public int weight=1;
@Override
public void eat() {
System.out.println("猫吃鱼");
}
/*
@Override
public void playgame() { //子类特有
System.out.println("猫捉迷藏");
}
*/
}
public class AnimalDemo {
public static void main(String[] args) {
//父类引用指向子类对象
Animal z=new Cat();
System.out.println(z.age);
z.eat();
}
}

--------------------------------------------------------------------
多态.成员访问特点:
成员变量:
编译看左边,执行看左边
成员方法:
编译看左边,执行看右边 (成员方法有重写所致)
public class Animal {
public void eat(){
System.out.println("动物吃东西");
}
}
public class Cat extends Animal{
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
public class Dog extends Animal{
@Override
public void eat() {
System.out.println("狗吃骨头");
}
public void lookDoor(){
System.out.println("狗看门");
}
}
public class AnimalOperator {
/*
public void useAnimal(Cat c){ //Cat c = new Cat();
c.eat();
}
public void useAnimal(Dog d){ //Dog d = new Dog();
d.eat();
}
*/
public void useAnimal(Animal a){
a.eat();
// a.lookDoor();
}
}
public class AnimalDemo {
public static void main(String[] args) {
AnimalOperator ao = new AnimalOperator();
Cat c = new Cat();
ao.useAnimal(c);
Dog d = new Dog();
ao.useAnimal(d);
}
}

希望大家批评指正
谢谢大家
本文介绍了多态的概念,包括其概述、实现条件(继承与方法重写)、以及优点和局限性。通过实例展示了如何在Animal和Cat类中运用多态,以及成员访问的特点。关键词:继承、多态性、方法重写、Animal、Cat、多态弊端
7575

被折叠的 条评论
为什么被折叠?



