Java中的多态性表现:
1,方法的重载和重写;
2,可以用父类的引用指向子类的具体实现,而且可以随时更换为其他子类的具体实现;
1,方法的重载和重写;
2,可以用父类的引用指向子类的具体实现,而且可以随时更换为其他子类的具体实现;
父类:Animal
package com.yhc.polymorphic;
public class Animal {
public void say(){
System.out.println("我是一个动物");
}
}
子类Dog
package com.yhc.polymorphic;
public class Dog extends Animal{
public void say(){
System.out.println("我是一只狗");
}
}
子类Cat
package com.yhc.polymorphic;
public class Cat extends Animal{
public void say(){
System.out.println("我是一只猫");
}
}
测试类
package com.yhc.polymorphic;
public class Test {
public static void main(String[] args) {
//向上转型
Animal animal1 = new Dog();
animal1.say();
Animal animal2 = new Cat();
animal2.say();
//向下转型
Dog dog = (Dog) animal1;
dog.say();
}
}
输出结果:
我是一只狗
我是一只猫
我是一只狗
对象的转型:
向上转型:子类对象->父类对象 安全
向下转型:父类对象->子类对象 不安全
向上转型:子类对象->父类对象 安全
向下转型:父类对象->子类对象 不安全
接口实现多态
People接口
package com.yhc.polymorphic;
public interface People {
public void say();
}
Student类
package com.yhc.polymorphic;
public class Student implements People{
public void say() {
System.out.println("我是一个学生");
}
}
Teacher类
package com.yhc.polymorphic;
public class Teacher implements People {
public void say() {
System.out.println("我是一个老师");
}
}
测试类
package com.yhc.polymorphic;
public class Test2 {
public static void main(String[] args) {
People people1 = new Student();
People people2 = new Teacher();
people1.say();
people2.say();
}
}
输出结果:
我是一个学生
我是一个老师