zoukankan      html  css  js  c++  java
  • java第七章 多态 课堂笔记/作业

    什么是多态:
    用同一个引用类型,使用不同的实例,得到不同的结果
    实现对台的三个要素是:
    继承、方法重写、父类引用指向子类对象

    1、使用多态时:是使用父类的类型,但是对象还是子类的对象
    2、如果子类不重写父类的方法,那么当使用多态时,是不能调用子类的独有的方法(谁的类型,调用谁的方法)
    3、但是当子类重写父类方法,使用多态调用的方法,看似是父类中的方法,但实际是子类中重写父类的那个方法

    当:父类引用指向子类对象/父类类型创建子类对象时
    这个对象不能够使用子类独有的方法

    当使用多态时:创建对象必须是:父类类型 对象名 = new 子类构造方法();

    抽象类:表示这个类的对象是不存在的,因此抽象类不能够被实例化对象
    但是可以用它的类型来创建对象,通常是创建子类对象,也就是多态

    因此不需要具体实现的方法,可以把这个方法定义为抽象方法
    (抽象方法没有方法体)

    抽象类中可以有非抽象方法和抽象方法。但是抽象方法只能存在于抽象类中。

    实现多态的两种方式:使用父类作为方法参数、使用父类作为方法返回值

    什么是多态:
    用同一个引用类型,使用不同的实例,得到不同的结果
    实现对台的三个要素是:
    继承、方法重写、父类引用指向子类对象

    1、使用多态时:是使用父类的类型,但是对象还是子类的对象
    2、如果子类不重写父类的方法,那么当使用多态时,是不能调用子类的独有的方法(谁的类型,调用谁的方法)
    3、但是当子类重写父类方法,使用多态调用的方法,看似是父类中的方法,但实际是子类中重写父类的那个方法

    当:父类引用指向子类对象/父类类型创建子类对象时
    这个对象不能够使用子类独有的方法

    当使用多态时:创建对象必须是:父类类型 对象名 = new 子类构造方法();

    抽象类:表示这个类的对象是不存在的,因此抽象类不能够被实例化对象
    但是可以用它的类型来创建对象,通常是创建子类对象,也就是多态

    因此不需要具体实现的方法,可以把这个方法定义为抽象方法
    (抽象方法没有方法体)

    抽象类中可以有非抽象方法和抽象方法。但是抽象方法只能存在于抽象类中。

    实现多态的两种方式:使用父类作为方法参数、使用父类作为方法返回值

    什么是多态:
    用同一个引用类型,使用不同的实例,得到不同的结果
    实现对台的三个要素是:
    继承、方法重写、父类引用指向子类对象

    1、使用多态时:是使用父类的类型,但是对象还是子类的对象
    2、如果子类不重写父类的方法,那么当使用多态时,是不能调用子类的独有的方法(谁的类型,调用谁的方法)
    3、但是当子类重写父类方法,使用多态调用的方法,看似是父类中的方法,但实际是子类中重写父类的那个方法

    当:父类引用指向子类对象/父类类型创建子类对象时
    这个对象不能够使用子类独有的方法

    当使用多态时:创建对象必须是:父类类型 对象名 = new 子类构造方法();

    抽象类:表示这个类的对象是不存在的,因此抽象类不能够被实例化对象
    但是可以用它的类型来创建对象,通常是创建子类对象,也就是多态

    因此不需要具体实现的方法,可以把这个方法定义为抽象方法
    (抽象方法没有方法体)

    抽象类中可以有非抽象方法和抽象方法。但是抽象方法只能存在于抽象类中。

    实现多态的两种方式:使用父类作为方法参数、使用父类作为方法返回值

    作业:

    package com.duotai2;
    /**
     * Pet.java 
     * @author 陈
     *2019.1.21
     */
    public class Pet {
        //创建宠物类
        
        //定义设置私有属性 :健康值
        private int health;
        
        //生成get/set方法
        public int getHealth() {
            return health;
        }
    
        public void setHealth(int health) {
            this.health = health;
        }
        
        //创建宠物类的方法make
        public void make() {
            System.out.println("我现在健康值是:"+this.getHealth());
        }
        
    }
    package com.duotai2;
    /**
     * Dog.java
     * @author 陈
     *2019.1.21
     */
    public class Dog extends Pet {
        //创建狗狗类 继承 宠物类
        
        //创建狗狗的私有方法pick
        public void pick() {
            System.out.println("陪狗狗玩接飞盘的游戏");
            this.setHealth( this.getHealth()-1);
        }
    }
    package com.duotai2;
    /**
     * Penguin.java
     * @author 陈
     *2019.1.21
     */
    public class Penguin extends Pet {
        //创建企鹅类 继承 宠物类
        
        //创建企鹅的私有方法swim
        public void swim() {
            System.out.println("让企鹅在南极游泳!");
            this.setHealth(this.getHealth()-3);
        }
    }
    package com.duotai2;
    /**
     * Test.java
     * @author 陈
     *2019.1.21
     */
    public class Test {
        //创建一个测试类
        
        public static void main(String[] args) {
            Pet pet = new Penguin();
            //子类到父类的转换,
            pet.setHealth(80);
            pet.make();
            
            //判断如果pet是Dog类,则将pet转换为Dog类型,执行Dog类特有的方法
            //如果pet是Penguin类,则将pet转换为Penguin类型,执行Penguin类特有的方法
            if(pet instanceof Dog) {
                Dog dog = (Dog)pet;
                dog.pick();
                dog.make();
            }else if(pet instanceof Penguin) {
                Penguin pen = (Penguin)pet;
                pen.swim();
                pen.make();
            }
        }
    }

    package com.duotai;
    
    public class Pet {
    private int health; public int getHealth() { return health; } public void setHealth(int health) { if(health<0||health>100) { System.out.println("输入的健康值超出范围,默认为60"); health = 60; } this.health = health; } public void make() { System.out.println(this.getHealth()); } public void eat() { } }
    package com.duotai;
    
    public class Dog extends Pet {
        
        public void eat() {
            
            System.out.println("给狗狗喂狗粮");
           this.setHealth(getHealth()+3);
            
        }
    }
    package com.duotai;
    
    public class Penguin extends Pet {
        public void eat() {
            super.eat();
            System.out.println("给企鹅喂鱼");
                super.setHealth(getHealth()+5);
            
            
        }
    }
    package com.duotai;
    
    public class Master {
        
        public void feeding(Pet pet) {
            if(pet.getHealth()<80) {
                pet.eat();
            }else if(pet.getHealth()>=100) {
                System.out.println("吃饱了!");
            }
        }
    }
    package com.duotai;
    
    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            //父类“宠物类” 引用指向子类“狗类”对象,子类到父类的转换
            Pet dog = new Dog();
            System.out.println("请输入狗狗的健康值");
            dog.setHealth(sc.nextInt());
            
            Master master = new Master();
            master.feeding(dog);
            dog.make();
    
            //父类“宠物类” 引用指向子类“企鹅类”对象,子类到父类的转换
            Pet pen = new Penguin();
            System.out.println("请输入企鹅的健康值");
            pen.setHealth(sc.nextInt());    
            master.feeding(pen);
            pen.make();
            
        }
    }

  • 相关阅读:
    项目后台的最新认识和对MVC封装性、可维护性的更深刻认识!
    java综述
    android模拟器里输出程序:HelloWorld
    JAVA程序员必去的网站
    1.MVC框架复习 2.Ajax加强 3.搜索建议 4,三级联动 5、刷新分页 6、Ajax局部动态更新数据
    jQuery的几个例子流程讲解
    1.jQuery基础语法 2.jQuery选择器、操作页面文档元素 3.jqueryDOM操作 4.jqueryCSS操作 5.Jquery事件 6.Jquery动画
    成功站长应具备的良好心态
    java的学习步骤方法书籍大总结
    Java常用类
  • 原文地址:https://www.cnblogs.com/qq993411626------/p/10300941.html
Copyright © 2011-2022 走看看