java的多态的作品_java基础之---多态

正文

多态的存在有三个必要的条件:

要有继承(两个类之间存在继承关系,子类继承父类)

要有重写(在子类里面重写从父类继承下来的方法)

父类引用指向子类对象

这三个条件一旦满足,当你调用父类里面被重写的方法的时候,实际当中new的是哪个子类对象,就调用这个子类对象的方法。下面以代码进行说明:

这里创建了一个Animal类,作为父类:

package com.mlin;

public class Animal {

//私有成员变量

private String name;

//构造方法

Animal(String name){

this.name = name;

}

//这里定义了一个方法

public void call(){

System.out.println("动物......");

}

}

创建两个子类,分别为Cat类和Dog类,它们都继承Animal类:

package com.mlin;

public class Cat extends Animal {

//定义自己的私有成员变量

private String catColor;

//构造方法

Cat(String name ,String catColor) {

super(name);//在构造方法的实现里面首先使用super调用父类Animal的构造方法Animal(String name),把子类对象里面的父类对象先造出来

this.catColor = catColor;

}

//这里是重写了call方法

public void call(){

System.out.println("我是cat哦....");

}

}

package com.mlin;

public class Dog extends Animal {

//定义自己的私有成员变量

private String dogColor;

//构造方法

Dog(String name ,String dogColor) {

super(name);//在构造方法的实现里面首先使用super调用父类Animal的构造方法Animal(String name),把子类对象里面的父类对象先造出来

this.dogColor = dogColor;

}

//这里是重写了call方法

public void call(){

System.out.println("我是dog哦....");

}

}

创建一个person类,用于饲养宠物:

package com.mlin;

public class Person {

//定义两个私有成员变量

private String name;

private Animal pet;

/**

* 在person类里面定义构造方法,第二个参数是Animal类型给程序带来了灵活性

* 因为这个Animal类型的参数是父类对象的引用类型,因此当我们传参数的时候,

* 可以把这个父类的子类对象传过去,即传Dog、Cat都可以。

* @param name

* @param pet

*/

Person(String name,Animal pet){

this.name = name;

this.pet = pet;

}

public void myCall(){

pet.call(); //传了什么对象进来,就让这个对象去调用它自己的call方法

}

public static void main(String arg[]){

//这里分别new了一个cat对象和dog对象,这两个都包含一个父类Animal对象

Cat cat = new Cat("catname", "black");

Dog dog = new Dog("dogname","yellow");

//这里new了两个person对象,分别为p1,养了一个cat,另一个是p2,养了一只dog

Person p1 = new Person("andy", cat);

Person p2 = new Person("andy", dog);

//两个person对象调用了myCall方法,使他们自己的宠物调用自己的call方法

p1.myCall();

p2.myCall();

}

}

运行结果如下:

c8160a2bd019

结果

以上就实现了动态绑定,也就是多态。

原创作者:凌小样

作品链接:https://www.jianshu.com/p/c8160a2bd019

【原创不易,转载请注明出处,感谢理解】

一位爱生活,爱创作,爱分享,爱自己的90后女程序员一枚,记录工作中的点点滴滴,一起学习,共同进步,期待能和优秀的您交上朋友

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值