• 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

     

  • 相关阅读:
    JavaScript类型转换
    JavaScript中的 typeof,null,和undefined
    JavaScript循环
    JavaScript条件语句
    JavaScript运算符
    JavaScript字符串
    JavaScript事件
    JavaScript对象,函数,作用域
    JavaScript基础
    数值数据的特征预处理
  • 原文地址:https://www.cnblogs.com/lvlisn/p/16412754.html
Copyright © 2020-2023  润新知