Java 多态的概述

  面向对象有三大特点:封装,继承,多态。前两者比较简单,大家也没什么疑惑。现在就解释下多态。看了很多人写的关于多态的表述,感觉总是差那么一点,说的不痛快,我把自己对于多态的看法写出来。

1.※什么是多态
  多态是同一个行为具有多个不同表现形式或形态的能力。

2.※多态的前提条件有哪些
  要有继承/实现关系
  要有方法重写
  要有父类引用指向子类对象

3.※ 多态的成员特点是什么

Animal a=new Dog();//Dog类继承Animal,有方法的重写。

当代码变成这个样子的时候,(也就是说当编译类型和运行类型不同,如下)多态就产生了。对象a具有两种类型:

编译类型:声明对象变量的类型,Animal,表示把对象看成什么类型。

运行类型:对象的真实类型,Dog。

所谓多态,对象具有多种形态,对象可以存在不同的形式。

Animal a=new Dog()://a此时表示Dog类型的形态

Animal b=new Cat()://a此时表示Cat类型的形态

多态的特点:把子类对象赋值给父类,在运行时期会表现具体的子类特征。

4.※ 多态的优点:

  1.消除类型之间的耦合关系

  2.可替换性

  3.可扩充性

  4.接口性

  5.灵活性

  6.简化性

5..※多态简单案例

package day0601;

public class DemoTest {

    /**
     * @param args
     */
    public static void main(String[] args) {

       People p = new Student();// 向上转型,自动转换。这种虽然也是多态,但是实际应用中作用不大,参考本人另一篇多态的应//用实例
        p.eat();
        Student s = (Student) p;// 向下转型,强制转换
        s.study();// 调用特有的方法,这就是多态的一个好处,可以在子类中添加自己独有的方法
    }

}
 

package day0601;

class People {
    public void eat() {
        System.out.println("吃饭,然后活着");
    }
}
 

package day0601;

class Student extends People {
    public void eat() {
        System.out.println("吃有营养的食品,健康成长.");
    }

    public void study() {
        System.out.println("好好学习,天天向上!!!");
    }
}// 注意:子类中可以不写任何方法,这里也不会报错,但是这很少使用,没意义。不过有一些情况下不写父类继承的方法是有的,调用时直接使用父类的方法
 

package day0601;

class Teacher {
    public void eat() {
        System.out.println("控制体重,合理饮食");
    }

    public void teach() {
        System.out.println("教书育人,为人师表");
    }
}


输出结果:

吃有营养的食品,健康成长.
好好学习,天天向上!!!

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值