08、面向对象——继承

继承的好处

把多个类中的相同的成员提出来定义到一个独立的类中,然后让多个类和该类产生关系
这些多个类就具备了相同的成员,该关系叫继承
格式:class 子类 extends 父类名{}
好处:
1、提高了代码的复用性
2、提高了代码的维护性
3、让类与类之间产生了关系,给第三个特征多态提供了前提
弊端:
继承让父类和子类之间有联系:耦合性高
1、低耦合,高内聚(某个类里的所有方法和变量都能考虑到)
2、打破了封装性
特点:Java 中支持单继承,但支持多层继承。不直接支持多继承,对C++中的多继承机制进行改良

单继承:一个子类只能有一个直接父类

多继承:一个子类可以有多个直接父类(Java 中不允许,进行改良)
不直接支持,因为多个父类中有相同成员,会产生调用不确定性
在 Java 中是通过“多实现”的接口方式来体现

继承的注意点:
1、子类只能继承父类所有非私有的成员(成员变量和成员方法)
2、子类不能继承父类的构造方法(其实构造方法没有继承一说,只有调用 super() 方法,以后再说)
3、不要为了部分相同的功能而去继承

什么时候定义继承

当类与类之间存在着所属关系的时候,就定义继承
x 是 y 中的一种:x extends y
所属关系: is a 关系

在子父类中成员的特点体现

成员变量(就近原则):
子类中的成员变量和父类的成员变量不一样的情况下,子类输出子类的东西
子类中的成员变量和父类的成员变量一样的情况下
在子类方法的局部范围里先找,有的话就使用,否则走下
在子类的成员范围里继续找,有的话就使用,否则走下
在父类的成员范围里继续找,有的话就使用,否则走下
错误:找不到符号

构造方法:
子类的构造方法默认访问父类的无参构造方法,为了初始化父类数据
父类中没有无参构造方法
子类通过 super 去显示的调用父类带参构造方法
子类通过 this 调用子类其他的构造方法,但是一定要有一个访问父类的子类构造方法

成员方法:
子类中的方法和父类中的方法的声明不一样,各有各的
子类中的方法和父类中的方法的声明一样
通过子类对象调用方法
先找子类中的方法,存在的话就使用,否则以下
再找父类中的方法,存在的话就使用,否则以下
错误:找不到符号

this 和 super 的区别
想访问本类的成员变量用:this
想访问父类的成员变量用:super

成员变量:
1、调用成员变量
this.成员变量 调用子类的成员变量
super.成员变量 调用父类的成员变量
2、调用构造方法
this 关键字 调用子类的构造方法
super 关键字 调用父类的构造方法
3、调用成员方法
this.成员方法 调用子类的成员方法
super.成员方法 调用父类的成员方法

重写

重载:overload
重写:override
方法重写
子类中出现和父类声明的返回值类型,方法名,参数列表一模一样(修饰符必须不能比父类的权限小)的方法

方法重写的应用
当子类需要父亲的功能,有以下几种修改情况
1、父亲的功能代码全部推翻,子类全部重新写
2、承认父亲的功能代码,继承下来,但是自己又有新发现,写自己特有的功能
3、和父亲功能一模一样(无意义)

方法重写的注意点
1、父类私有方法不能重写,子类都不能继承,就更不能重写
2、子类重写父类方法时,访问权限不能比父类更,低推荐一致
3、父亲静态方法,子类也必须通过静态方法重写

final

可以修饰类,方法,变量
特点:
1、修饰的类,不能被继承
2、修饰的方法,不能被重写
3、修饰的变量,不能被重新赋值了,所以说是一个常量
在程序如果一个数据是固定的,加上 final 固定
常量写法规范:常量所有字母都大写,多个单词,中间用_连接

注意点:
基本类型:值不能变
引用类型:地址值不能改变,但是对象里的内存非 final 成员值可以改变

初始化时机:
1、作为成员变量没有给出赋值时,Java 不给出默认值 0
2、最迟在构造方法里被赋值
最早时机:定义变量的时候就赋值
其次时机:构造代码块
最后时机:构造方法
只能被赋值一次

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值