面向对象三大特征:封装,继承,多态

本文详细介绍了Java中的多态性概念,包括其前提条件(继承和方法重写)、成员访问特点、优缺点以及转型操作。通过实例展示了如何通过父类引用调用子类的方法和变量,探讨了多态在提高代码扩展性方面的优势以及不能直接访问子类特有功能的限制。此外,还讨论了向上和向下转型的操作及其可能的异常情况。
摘要由CSDN通过智能技术生成

1.什么是多态

  • 一个对象在不同时刻体现出来的不同形态。
  • 举例:水:  加热(水蒸气)  降温(冰块)

2.多态的前提 

  • 有继承、实现关系
  • 有方法重写
  • 父类的引用指向子类的对象。----》父类  父类的对象 = new 子类();
public class AnimalTest {
    public static void main(String[] args) {
        // 3 父类的引用指向子类的对象
        // 多态形式对象
        Animal a = new Cat();
    }
}

class Animal{
    public void eat(){
        System.out.println("吃东西");
    }
}

class Cat extends Animal{
    @Override
    public void eat() {
        System.out.println("猫吃鱼....");
    }

 多态的成员访问特点

  • 构造方法:和继承一样
  • 成员变量:编译看左边,执行看左边
  • 成员方法:编译看左边,执行看右边
public class MemberTest {
    public static void main(String[] args) {
        // 父类的引用指向子类的对象
        Fu f = new Zi();

        // 多态对象调用成员变量
        System.out.println(f.num);

        // 多态对新乡调用调用成员方法
        f.show();

        // 多态对象不能调用子类特有的方法
        // f.show2();
    }
}

class Fu {
    int num = 100;

    public void show() {
        System.out.println("父类的show方法");
    }
}

class Zi extends Fu {
    int num = 10;

    public void show() {
        System.out.println("子类的show方法");
    }

    public void show2(){
        System.out.println("子类特有的方法");
    }

多态的优缺点

优点:提高代码的扩展性

缺点:不能调用子类特有功能

多态的转型

  • 向上转型:把子类类型数据转换成父类类型数据 Animal a = new Cat();自动类型转换
  • 向下转型: 把父类类型数据转换成子类类型数据  Cat cat = (Cat)a; 将大的级别转给小的。进行强制类型转换!

常见异常

 

      

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值