【Java】继承和多态

一、继承

同c++,继承的思想一脉相承,是为了给现实世界中有is-a关系的事物之间实现代码复用的一种思想。
还有一种关系:has-a。

1.继承的例子(is-a)

比如:猫和狗都是动物,猫和狗就可以继承自动物。

2.组合的例子(has-a)

眼睛和鼻子都属于头,眼睛和鼻子就可以组合成为头。

二、多态

多态是一种事物的多种状态,是一种事物在不同对象上表示出的不同状态的现象。

多态在c++中实现必须使用(纯)虚函数+指针/引用,在Java中需要使用重写。

1.重写

重写和重载相近,但是重写要求更加严苛:
1、函数名相同
2、参数列表相同
3、返回值相同
由上,重写就是在子类中有一个和父类一模一样的函数,只不过是函数体不一样,也正是因为此,才能够使得一个东西在不同对象身上展示出不一样的状态。

2.重载

重载就是将同一个函数名的函数,根据参数列表的不同(顺序、个数、类型),实现为不同的函数,那么这两个同名函数就构成重载。
值得注意的是:不以返回值不同而构成重载

三、继承的语法

使用extends关键字。

四、继承的注意事项

1.初始化的顺序:

先父类,后子类。
在此基础上还有一个原则是先静态代码块,再实例代码块,再构造代码块。(创建多个子类对象时,静态代码块只执行一次)

class Father {
    static {
        System.out.println("父类静态代码块");
    }
    {
        System.out.println("父类实例代码块");
    }
    public Father() {
        System.out.println("父类构造函数");
    }
}
class Son extends  Father{
    static {
        System.out.println("子类静态代码块");
    }
    {
        System.out.println("子类实例代码块");
    }
    public Son() {
        System.out.println("子类构造函数");
    }
}
public class Main {
    public static void main(String[] args) {
        Father father = new Son();
    }
}

执行结果:
执行结果

2.super关键字

1)访问父类成员时需要使用super关键字。
2)当在子类中实现带参父类初始化需要显式调用super完成子类中父类成员的初始化。
在这里插入图片描述

必须第一行写super、不能与this同时出现
在这里插入图片描述
访问父类成员
但是this和super可以同时访问父类对象:
在这里插入图片描述
this可访问的成员是当前整个对象的,但是super更专精些,只能访问到当前对象继承父类的那一部分成员。

五、继承访问限定符

privatedefaultprotectedpublic
同包同类
同包不同类
不同包的子类
不同包非子类

其中包是用来更好管理类的东西(将功能相近的类放在同一个包中)

六、多态实现方式

多态实现方式必须有:
1.继承
2.子类和父类中构成重写(函数名相同、参数列表相同、返回值相同)
3.通过父类引用来调用重写的方法(切片)
在这里插入图片描述
可以使用override进行标注重写

在这里插入图片描述
若不满足重写,则不构成多态:
在这里插入图片描述

七、多态的理解

当同一个方法(构成重写),对于同一个父类类型,但是让他指向不同的子类(发生向上转型),会发生不同的调用,这就是多态。

注意事项:

尽量不要在构造函数中使用实例方法,因为会触发动态绑定,从而发生不愿意看到的结果在这里插入图片描述

  • 子类中的重写方法:

在这里插入图片描述
在构造方法中尽量使用final或者是private方法:
在这里插入图片描述
private:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值