Java 入门 27 多态

 

      

 Animal类

package com.ITheima._polymorphic;

public abstract class Animal {
    public String name="父类动物";
    public abstract void run();
}
View Code

Dog类

package com.ITheima._polymorphic;

public class Dog extends Animal{
    public String name="子类狗";
    @Override
    public void run(){
        System.out.println("狗跑的很快");
    }

    public void lookDoor(){
        System.out.println("狗会看门");
    }
}
View Code

Tortoise类

package com.ITheima._polymorphic;

public class Tortoise extends Animal{
    public String name="子类乌龟";
    @Override
    public void run(){
        System.out.println("乌龟跑不了");
    }

    public void layEggs(){
        System.out.println("乌龟会下单");
    }
}
View Code

Test类                                                                                                                                                                             

package com.ITheima._polymorphic;


/**
 * 目标:认识多态,理解多态的形式,和概念
 */
public class Test {
    public static void main(String[] args) {
        //1  多态的形势  父类类型  对象名称  =new  子类构造器
        Animal a = new Dog();
        go(a);//        a.run();//方法编译看左边,运行看右边
        System.out.println(a.name);//变量调用:编译看左边 ,运行也看左边
        //a.lookDoor(); 多态下不能访问子类的独有功能

        Animal a1 = new Tortoise();
        go(a1);//        a1.run();
        System.out.println(a1.name);

    }

    /**
     * 要求:私有的动物都可以进来比赛
     *
     */
    public static void go(Animal a){
        System.out.println("开始");
        a.run();
        System.out.println("结束");
    }
}
View Code

强制类型转换

 

 

 

package com.ITheima._polymorphic;


/**
 * 目标:认识多态,理解多态的形式,和概念
 */
public class Test {
    public static void main(String[] args) {
        //1自动类型转换
        Animal a = new Dog();
        a.run();//多态下不能访问子类的独有功能

        //2强制类型转换
        Dog a1 = (Dog) a;
        a1.lookDoor();//通过强制类型转换 可以调用子类的独有功能

        Animal a2=new Tortoise();
        //Dog d=(Dog)a2;//强制类型转换,编译阶段不报错(注意:又继承或实际关系编译阶段可以强制,没毛病)有iunx时 可能会出错的
        if(a2 instanceof Tortoise){
            Tortoise t=(Tortoise)a2;//从父类类型到子类类型 必须强制类型转换
            t.layEggs();
        }else if(a2 instanceof Dog){
           Dog d=new Dog();
           d.lookDoor();
        }
    }
}
View Code

 

 

posted @ 2022-06-26 00:03  还有什么值得拥有  阅读(13)  评论(0编辑  收藏  举报