继承就是对某些类的抽象,就是代码的复用
Java的继承时单继承,就是一个子类只能有一个父类;
-
private 私有
- 子类继承不到,完全拿不到
- 只能父类自己用
-
默认权限(啥都不写)
- 同包下:能继承
- 不同包:不能继承
-
protected 受保护
- 不管同包不同包,子类全都能继承
- 跨包也能继承
-
public 公开
- 任何地方都能继承,随便用
super
- 本质
super 代表父类对象 this 代表当前子类对象 super 代表父类对象
- 三大用法
① 调用父类构造方法(最常用)
格式:super();
-
必须写在子类构造第一行
-
作用:先调用父类无参构造,再执行子类构造
-
有参:
super(实参);调用父类有参构造
只能在子类的方法或者构造方法中
this()本类的构造
super()父类的构造
多态
父类的引用指向子类的对象
方法重写
- 是什么
子类重新写一遍父类已经有的方法 父类有这个方法,子类觉得不好用,重新改写内容,就是重写。
-
重写满足 4 个条件
-
继承关系:必须子类继承父类
-
方法名一模一样
-
参数列表一模一样
-
返回值一致
-
权限要求
子类权限 不能比父类更小
- 父类 public → 子类只能 public
- 父类 protected → 子类可用 protected/public
private 方法不能被重写!
父类的方法不满足子类的需要
多态的注意情况
1 子类继承父类,子类重写了父类的方法,子类可以调用父类的独有方法,和自己重写过的方法
2 父类的引用指向子类的对象
这个变量虽然是父类型,但是是子类对象,调用时,他调用被重写的方法的时候,是调用的子类的方法,而且不能调用子类独有的方法,只能用父子类共有的方法,也就是子类重写过的父类的方法
3必须有继承关系,子类重写父类方法,父类引用指向子类对象才能实现多态
同一个方法根据对象类型的不同采取不同的行为方式
父类型父类对象父类方法
子类型子类对象 子类和父类方法
父类型子对象 父子类共有的方法
instancesof
作用:判断 左边对象 是不是 右边这个类型 中文:是不是、属于
把子类转换为父类,向上转型,直接转
把父类转换为子类,向下转型,需要强制转换,需要先判断能不能转
向上转型后子类独有的方法不能用
static final
在当前类里面,访问静态方法不用类名可以直接调用,
代码块的执行顺序
静态代码块
代码块
构造器
静态代码块只执行一次
创建对象的时候,就把类中的静态代码块,代码块,构造方法一起执行
static修饰的都是属于类的
用final修饰之后的类不能被继承,