2019.1.21 作业

作业链接:https://pan.baidu.com/s/1_Z9nWwKi_Y2iHHXMqRvqBw 

提取码:0bch

一、笔记

多态是同一个引用类型使用不同的实例,执行不同的操作

实现多态的三要素:继承 方法重写 父类引用指向子类对象

使用多态时:是使用父类的类型,但是对象是子类的对象

如果子类不重写父类的方法,那么当使用多态时,是不能调用子类独有的方法

(谁的类型,调用谁的方法)

但是当子类重写父类的方法,使用多态调用的方法,看似是父类中的方法,但实际上是子类中重写过父类的哪个方法

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

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

关键字:abstract   抽象

抽象类:表示这个类的对象是不存在的,因此抽象类不能够被实例化对象

但是可以用它的类型来创建对象,通常是创建子类的对象,也就是多态

(抽象方法没有方法体)

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

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

向上转型等同于自动类型转换,向下转型等同于强制类型转换

二、作业

package com.homework;

public abstract class Pet {
    private String name;
    private int health;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getHealth() {
        return health;
    }
    public void setHealth(int health) {
        if(health < 0 || health > 100){
            health = 60;
        }
        this.health = health;
    }
    public void print() {
        System.out.println("健康值是"+getHealth());
    }
    public abstract void eatting();
}
package com.homework;

public class Dog extends Pet{
    public void eatting() {
        if(this.getHealth()<100) {
            System.out.println("给狗狗吃狗粮");
            this.setHealth(this.getHealth()+3);
        }
        else {
            System.out.println("狗狗不需要喂食!");
        }
    }
}
package com.homework;

public class Penguin extends Pet{
    public void eatting() {
        if(this.getHealth()<100) {
            System.out.println("给企鹅吃鱼");
            this.setHealth(this.getHealth()+5);
        }
        else {
            System.out.println("企鹅不需要喂食!");
        }
    }
}
package com.homework;

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        Pet pet =new Dog();
        System.out.print("请输入狗狗的健康值(0-100):");
        pet.setHealth(sc.nextInt());
        pet.eatting();
        pet.print();
        pet =new Penguin();
        System.out.print("请输入企鹅的健康值(0-100):");
        pet.setHealth(sc.nextInt());
        pet.eatting();
        pet.print();
    }

}

package homework1;

public abstract class Pet {
    private String name;
    private int health;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getHealth() {
        return health;
    }
    public void setHealth(int health) {
        if(health < 0 || health > 100){
            health = 60;
        }
        this.health = health;
    }
    public void print() {
        System.out.println("健康值是"+getHealth());
    }
}
package homework1;

public class Dog extends Pet{
    public void pickFlyDisc() {
        if(this.getHealth()>0) {
            System.out.println("狗狗吧扔出去的飞盘接回来");
            this.setHealth(this.getHealth()-1);
        }else {
            System.out.println("健康值不够!狗狗接不动了!");
        }
    }
}
package homework1;

public class Penguin extends Pet{
    public void swimming() {
        if(this.getHealth()>0) {
            System.out.println("企鹅开始游泳");
            this.setHealth(this.getHealth()-1);
        }else {
            System.out.println("健康值不够!企鹅游不动了!");
        }
    }
}
package homework1;

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        Pet pet = new Dog();
        System.out.print("请输入狗狗的健康值(0-100):");
        pet.setHealth(sc.nextInt());
        if(pet instanceof Dog) {
            Dog dog=(Dog)pet;
            dog.pickFlyDisc();
            dog.print();
        }else if(pet instanceof Penguin) {
            Penguin penguin=(Penguin)pet;
            penguin.swimming();
            penguin.print();
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/777-chenyulin/p/10300553.html