首页 > 分享 > Java多态实践

Java多态实践

    多态,简单的理解就是事物的多种形态。专业的术语说就是:同一个实现接口,使用不同的实例而执行不同的操作。

首先创建一个父类Pet类。

public abstract class Pet {

private String name="无名氏";

private int health=80;

private int love=80;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getHealth() {

return health;

}

public void setHealth(int health) {

this.health = health;

}

public int getLove() {

return love;

}

public void setLove(int love) {

this.love = love;

}

public Pet(String name){

this.name=name;

}

public Pet(String name,String weight,int health){

this.name=name;

this.health=health;

}

public void print(){

System.out.println("宠物的自白:n我的名字叫"+this.name+"我的健康值是"+

this.health+"我和主人的亲密度是"+this.love);

}

public abstract void eat();

}

java

运行

再创建一个子类Dog

public class Dog extends Pet{

public Dog(String name,String starin) {

super(name);

this.starin=starin;

}

String starin;

public String getStarin() {

return starin;

}

public void eat() {

super.setHealth(super.getHealth()+5);

System.out.println("狗狗"+super.getName()+"吃饱了健康值加5。目前健康值"+super.getHealth());

}

}

java

运行

    创建一个Master类来喂养宠物

public class Master {

private String name="";

private int money=0;

public Master(String name, int money) {

this.name = name;

this.money = money;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getMoney() {

return money;

}

public void setMoney(int money) {

this.money = money;

}

public void feed(Pet pet){

pet.eat();

}

}

java

运行

在写一个测试类

public class Test {

public static void main(String[] args) {

Pet pet=new Dog("小小","哈士奇");

pet.eat();

}

}

java

运行

运行结果如下

狗狗小小吃饱了健康值加5。目前健康值85

    从上面的代码可以看出我们在传一个Dog类对象的时候,我们进行了一个子类到父类的转换(向上转型),这时候调用的Pet.eat()方法不是调用的父类的,而是指向子类的,我的理解(就是把创建Dog的对象的地址值赋给了Pet对象pet所以pet指向的还是原来的那个dog对象),我们们一起学到的基本数据类型之间的转换。

int i=5;

double i1=i;

double i2=1.0;

int i3=(int)i2;

java

运行

    子类转换父类的规则

1.将一个父类的引用指向一个子类对象时,称向上转型,自动进行类型转换。

2.此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法。

3.父类无法调用子类特有的数据。

结论

1.继承的存在(无继承,无多态,继承是多态的基础)

2.子类要重写父类的方法(多态下调用子类重写后的方法)

3.父类引用变量指向子类对象(子类到父类的类型转换)

相关知识

java多态 面试 java多态例题
java 多态
java特性封装、抽象、继承、多态理论
java多态实现电子宠物系统
Java笔记:多态polymorphic
编写Java程序,以继承和多态思想模拟饲养员喂养不同动物的不同行为
多态
解析java多态经典习题
Java猫和狗(继承,多态,抽象,接口版)下
(java)多态

网址: Java多态实践 https://m.mcbbbk.com/newsview1340954.html

所属分类:萌宠日常
上一篇: 【马文君】减肥营养餐:限能量高蛋
下一篇: 《中国居民膳食指南》辅导