JAVA基础篇-面向对象(第十三课)多态,抽象类,接口

多态,抽象类,接口知识点的思维导图如下:
在这里插入图片描述

多态

在上一节继承中讲到,如果一个猫继承于一个动物类,在测试类中创建猫的对象是这样写的 Cat c = new Cat();在这个等式中含义就是猫类的一个实例对象,创建了一个猫对象,但是猫同时也是动物的一种,也是属于动物类的,因此如果这样写 Animal a = new Cat();那就表示创建了一个动物的猫对象。那为什么这么定义呢?因此这就是多态的由来,同一个事物,在不同时刻表现出来的不同状态。猫属于猫类,也属于动物类
多态的存在意义(仅代表博主的看法):多态的前提是继承和方法重写,那首先先说一下继承,继承就是子类继承父类的成员,包括成员变量和成员方法,构造方法的话是要先访问父类的构造方法,那在父类中一般成员变量是私有化的,然后提供get(),set()方法来访问的,或者是提供有参构造方法来访问成员变量的,这里记住,方法!方法!方法!相当于成员变量也是封装称为“方法”来让外界来访问的,那如果这么写 Animal a = new Cat()的话,对象a这时候还是属于cat类的一个对象,用它来访问的话,会有以下的总结。
a:成员变量
编译看左边,运行看左边。
b:构造方法
创建子类对象的时候,会访问父类的构造方法,对父类的数据进行初始化。
c:成员方法
编译看左边,运行看右边。
d:静态方法
编译看左边,运行看左边。(静态和类相关,算不上重写,所以,访问还是左边的)
用代码来演示一下:
这是动物类:
public class animal {
private String name;
private int age;
public void play(){
System.out.println(“这个动物类”);
}
}
这是猫类:
public class cat extends animal{
public void play(){
System.out.println(“这是猫类”);
}
}
这是测试类:
public class test {
public static void main(String[] args) {
animal b =new cat();
b.play();
}
}
因此一般来说成员变量是提供方法来访问的,构造方法是子类初始化的,静态方法是不算的。**那么就只剩下成员方法了,而且最重要的一般都是“方法”,那么使用多态的话,注意力就集中在方法上,而且更加直观,左边是父类,是一种比较抽象的类(动物),而右边是猫的对象,这样也更加体现面向对象的思想。**当然我第一次接触的时候也不是太习惯这种写法,但是多敲几次代码,多琢磨几次就慢慢习惯了。 多态的缺点:不能使用子类特有的功能。在子类中重新定义的方法,直接访问不到的,需要向下转型才可以访问。比如在cat类中有一个Game的方法public void Game(){ System.out.println(“打游戏”); } 那就必须向下转型才可以 ((cat) b).Game();

附上多态的内存图:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值