继承
一、封装实现
- 类的属性封装:属性私有,对外提供get和set方法;
- 类的方法封装:功能的封装,方便调用和维护;
- 类本身就是一种封装的实现;
二、继承
1、概述
- 子类自动拥有父类 的一些属性和方法
- 类是单继承的,接口可以实现单继承
- instanceof 方法判断子类对象是否属于父类返回 true
super关键字
- super是直接父类对象的引用可以通过super来访问父类中被子类覆盖的方法或属性;
- 构造器的第一行代码必须是 this()或者 super(),不写的话就是默认 super();
2、属性隐藏
- 指的就是子类和父类中定义了同名的字段,通常父类的字段会被隐藏
- 一般的原则就是使用从父类继承的方法的时候使用父类的同名字段
- 使用子类自己的方法的时候使用子类自己的字段,需要在子类自己的方法中使用父类的同名字段的时候需要使用
super.field
3、方法覆盖
方法重写规则(override)
- 方法同名,参数列表和返回值类型需相同,访问权限更加开放
- 重写方法运行时异常随便抛,非运行时异常只能和对应方法相同的或者子类或者不抛;
- 声明为 final 和 static 的方法不能被重写;
- 构造方法和子类无法访问的父类方法不能被重写;
- 当需要在子类中调用父类的被重写方法时,要使用super关键字;
补充:方法重载(Overload)
- 概念:方法名字相同,而参数列表不同,返回类型无关
- 说明:方法能够在同一个类中或者在一个子类中被重载
- 重写与重载的比较
4、继承树追溯
- 属性和方法查找顺序:从下往上找;
- 构造方法调用顺序:先向上追到 object 类,再向下依次执行构造器初始化;
三、Object 类
1、toString方法
- 一般需要重写,用来打印有用的信息;
- sysout 语句默认会调用这个方法;
2、equals方法
equals 和 ==
==
基本类型则表示值相等,