public class sd{
public static void main(String[] args) {
Person p = new Superman(); //父类引用指向子类对象,超人提升为i,向上转型
System.out.println(p.name);
p.tanshengyi();
Superman m=(Superman)p;//向下转型
m.fly();
}
}
class Person {
String name="Thon";
public void tanshengyi() {
System.out.println("tanshengyi");
}
}
class Superman extends Person {
String name="Superman";
public void tanshengyi() {
System.out.println("123456");
}
public void fly() {
System.out.println("fly");
}
}
结果:
内存图:
多态的好处和弊端:
好处:
提高代码的扩展性(多态保证),维护性(继承保证),可以当作形式参数接收任意子类参数
public class animal {
public static void main(String[] args) {
/* methods(new Cat());
methods1(new Dog());*/
methods2(new Cat());
methods2(new Dog());
}
/* public static void methods(Cat c) {
c.eat();
}
public static void methods1(Dog c) {
c.eat();
}*/
public static void methods2(Animal c) {
c.eat();
}
}
class Animal {
public void eat() {
System.out.println("eat");
}
}
class Cat extends Animal {
public void eat() {
System.out.println("🐟");
}
public void catchmouse() {
System.out.println("老鼠");
}
}
class Dog extends Animal {
public void eat() {
System.out.println("肉");
}
public void lookhouse() {
System.out.println("看家");
}
}
弊端:
不能使用子类特有的属性和行为