首页 分享 多态 from zero

多态 from zero

来源:萌宠菠菠乐园 时间:2024-11-23 10:28

多态 from zero

最新推荐文章于 2024-02-10 17:12:58 发布

qq_41506704 于 2018-01-24 20:50:50 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

多态

多态:具有表现多种形态能力的特征,如;同一件事情做的不同过程  吃饭可以吃米饭  吃饼等其他食物这种过程称为多态

 功能:减少代码使用,更好的优化代码,处理结构方便

使用:

 (向上转型)自动转型

1 父类做类型子类实例化

 Pet pet =new Dog( ); //基本用法

public class Pet{

public void show(){

System.out.println("宠物的信息");

}

}

public class Dog extends Pet{

public void show(){

System.out.println("狗狗的信息");

}

}

public class Text{

public static void main(String [] args){

Pet pet =new Dog( );

pet.show();

}

}

此次输出的为狗狗的信息,不是宠物的信息

2 父类做形参,子类做实参

public class Pet {

public void eat(){

System.out.println("宠物正在吃");

}

}

public class Dog extends Pet{

public void eat(){

System.out.println("狗狗正在吃狗粮");

}

}

public class Cat extends Pet{

public void eat(){

System.out.println("小猫正在吃鱼");

}

}

public class User{

public void feed(Pet pet){

   pet.eat();

}

}

public class Text{

public static void main(String [] args){

Dog dog=new dog( );

User p=new User( );

p.feed(dog);

}

}

输出结果为狗狗正在吃狗粮

利用父类做形参 子类做实参实现的,根据题意传入的狗狗 和小猫需要完成两个方

法 一个给狗狗喂养一个给小猫喂养 当参数设计成宠物对象,可节省代码量,完成

代码 优化

     (向上转型)强制转换

强制转换 子类在前父类在后(小转大)

 3 

父类做返回参数

public Pet cin(int i){

Pet pet=null;

if(i==1){

pet=new Dog();

Dog dog=(Dog)pet;

dog.strain="阿拉斯加";

}else if(i==2){

pet =new Cat();

}

return pet;

}

原因:strain不是父类Pet的属性 是Dog特有的属性所以不能调用 把pet强制转换成

 Dog类 在赋值即可 ;用pet . 调用显示信息方法会显示出strain 赋值信息

 原因如下
数据类型分为:基本数据类型和引用数据类型

在此原因为引用数据类型

强制转换后类型的转化不是等于 而是指针的指向

如:Pet D1=new Pet( );

Pet D2=new Pet( );  D1=D2;

是把D2的指针指向D1的数据元素

向下强制转换 

会用到关键字 :instanceof

此关键字比较一个类是否和另一个类属于同一个类实例

强制转换会使用到

如:

相关知识

多态
java 多态
ZERO宠物俱乐部正式营业
多态应用
27.练习:多态:多态实现宠物店领养宠物
pet zero喂粮机app
Java笔记:多态polymorphic
(java)多态
多态有什么用
Object类、多态

网址: 多态 from zero https://www.mcbbbk.com/newsview634916.html

所属分类:萌宠日常
上一篇: 100g狗粮等于多少ml
下一篇: 金毛幼犬怎么吃狗粮

推荐分享