Java中多态性体现:
1,方法的重载和重写;
2,可以用父类的引用指向子类的具体实现,而且可以随时更换为其他子类的具体实现;
》》》》》》》》》》
public class Animal {
public void say(){
System.out.println("这是动物类");
}
}
》》》》》》》》》》
public class Cat extends Animal{
public void say(){
System.out.println("这是猫");
}
}
》》》》》》》》》
public class Dog extends Animal{
public void say(){
System.out.println("这是狗");
}
}
》》》》》》》》》
public class Test {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
/*Dog dog=new Dog();
dog.say();
Cat cat=new Cat();
cat.say();*/
//父类引用指向子类对象
Animal animal=new Dog();
animal.say();
animal=new Cat();
animal.say();
}
}
对象的转型:
向上转型:子类对象——》父类对象 安全
向下转型:父类对象——》子类对象 不安全
public class Test {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
/*Dog dog=new Dog();
dog.say();
Cat cat=new Cat();
cat.say();*/
//父类引用指向子类对象
Animal animal=new Dog();
animal.say();
//向下转型
Dog dog=(Dog)animal;
dog.say();
//向下转型二,不安全
/* Cat cat=(Cat)animal;
cat.say();*/
}
}
》》》》》》》》》》》》
接口的向上、下转型
public interface Animal2 {
public void say2();
}
》》》》》》》
public class Dog2 implements Animal2{
public void say2(){
System.out.println("这是狗");
}
}
》》》》》》》
public class Cat2 implements Animal2{
public void say2(){
System.out.println("这是猫");
}
}
》》》》》》》
public class Test2 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//父类引用指向子类对象
Animal2 animal2=new Dog2();
animal2.say2();
//向下转型
Dog2 dog2=(Dog2)animal2;
dog2.say2();
//向下转型二,不安全
/* Cat2 cat2=(Cat2)animal2;
cat2.say2();*/
}
}