java里面多态的体现,javase多态(对多态的理解、多态的体现)

1、举例:

创建一个Person类,Student类继承Person类,并分别创建子类特有、父类特有、子类和父类共有的方法。

Person类:

public classPerson {privateString name;privateInteger age;public voideat(){

System.out.println("我饿了!");//子类和父类共有的方法

}public voidtired(){//父类特有的方法

System.out.println("我累了!");

}

}

Student类:

public class Student extendsPerson {public voideat(){//子类和父类共有的方法

System.out.println("我要吃饭!!");

}public voidstudy(){//子类特有的方法

System.out.println("我正在学习!!");

}

}

测试类:

public classTest {public static voidmain (String [] args){

Person person=newStudent();

person.eat();

person.tired();

((Student) person).study();

}

}

20200304222809612391.png

(1)形式上:父类的引用指向子类的对象。例如:

Person person=new Student();

(2)当调用子类和父类共有的方法的时候,会执行子类重写后的方法

(3)当调用父类特有的方法的时候会执行父类的方法。

(4)当调用子类的特有的方法的时候要向下转型,否则,是无法调用子类的特有的方法的。

缺点:

它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的。

2、对多态的理解

(1)接口的多种不同的实现方式即为多态。

(2)将父类对象设置为一个或更多个子类对象。

(3)程序中定义的引用类型的变量调用的方法在编程的时候并不确定,当处于运行期间才确定(编译看左边,运行看右边)。这样不用修改源码就可以把变量绑定到不同的类实例上,让程序拥有了多个运行状态,这就是多态。

public class Worker extendsPerson {public voideat(){

System.out.println("我饿了,我要吃饭!!");

}public voidwork(){

System.out.println("今天继续搬砖!!");

}

}

public class Student extendsPerson {public voideat(){

System.out.println("我要吃饭!!");

}public voidstudy(){

System.out.println("我正在学习!!");

}

}

这样的话,在定义父类的引用的时候运行的时候就可以指向两种不同的对象,调用eat方法后就会产生不同的效果。

(4)三要素:

继承(先决条件,没有继承就不会有子类对父类方法的重写)

重写(不同的子类对父类的方法进行重写之后才会体现父类的引用的多态)

父类引用指向子类对象(这是多态的具体实施)

3、多态的体现

20200304222810277455.png

Set students=new HashSet();

students.add(stu1);

Set students1=new LinkedHashSet();

students1.add(stu2);

HashSet类和LinkedHashSet类都实现了同一个接口Set,在上面的程序中,Set接口的引用,分别指向了不同的对象,调用名字相同但是功能不同的方法,体现出了多态。

原文:https://www.cnblogs.com/zhai1997/p/12416447.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值