继承

继承

继承后的特点——成员变量
  1. 如果子父类中出现不重名的成员变量,这时的访问是不受影响的;

  2. 如果子父类中出现重名的成员变量,这时的访问是有影响的;

    解决:在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,类似于之前学过的 this ;

Fu 类中的成员变量是非私有的,子类中可以直接访问。若Fu 类中的成员变量私有了,子类是不能直接访问的。通常编码时,我们遵循封装的原则,使用private修饰成员变量,那么如何访问父类的私有成员变量呢?对!可以在父类中提供公共的getXxx方法和setXxx方法
继承后的特点——成员方法
  1. 如果子类父类中出现不重名的成员方法,这时的调用是没有影响的。对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法,若子类中不存在就会执行父类中相应的方法;

  2. 如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写;

    方法重写 :子类中出现与父类一模一样的方法时(返回值类型,方法名和参数列表都相同),会出现覆盖效果,也称为重写或者复写。声明不变,重新实现;

重写的应用

​ 子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从而进行扩展增强;

注意事项:
  1. 子类方法覆盖父类方法,必须要保证权限大于等于父类权限;
  2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样;
继承后的特点——构造方法

构造方法的定义格式和作用:

  1. 构造方法的名字是与类名一致的,所以子类是无法继承父类构造方法的;
  2. 构造方法的作用是初始化成员变量的。所以子类的初始化过程中,必须先执行父类的初始化动作。子类的构造方法中默认有一个 super() ,表示调用父类的构造方法,父类成员变量初始化后,才可以给子类使用;
初始化过程:
	1. 初始化父类中的静态成员变量和静态代码块 ;
	2. 初始化子类中的静态成员变量和静态代码块 ; 
	3. 初始化父类的普通成员变量和代码块,再执行父类的构造方法;
     4.初始化子类的普通成员变量和代码块,再执行子类的构造方法;

多态

​ 多态: 简单来说就是用同一个对象调用同一个方法去做不同的事情;

实现多态的前提:

​ 1.具有继承关系;

​ 2.子类重新父类的方法;

​ 3.父类的引用指向子类的对象;

多态格式的体现:

父类类型 变量名 = new 子类对象;
变量名.方法名();:父类类型:指子类对象继承的父类类型,或者实现的父接口类型

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写后方法。

即编译看左边,运行看右边;

多态的好处:

​ 父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能体现出多态的扩展性与便利;

引用类型转换

​ 向上转型(默认)、向下转型(强制);

​ 使用多态调用时,会先检查父类中是否有该方法,不存在就会报错,无法调用,要调用就必须转型;

instanceof 关键字

​ 给引用变量做类型校验

变量名 instanceof 数据类型
如果变量属于该数据类型,返回true。
如果变量不属于该数据类型,返回false
内部类

​ 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类,B则称为外部类;


​ 外部类名.内部类名 对象名 = new 外部类型().new 内部类型();


访问特点:
内部类可以直接访问外部类的成员,包括私有成员。
外部类要访问内部类的成员,必须要建立内部类的对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值