------------------
复习
1.方法的重载
前提是在一个类中
2.引用类型数组
声明初始化之后,需要new,在堆中开辟一片内存,否则会有空指针异常
------------------------
继承
1.子类(衍生类/扩展类) extends 父类(基类)
2.继承的特征:
a.子类继承父类会继承父类中的成员变量和方法
(待定:有一些权限的修饰词如private int num, num子类是无法直接访问的)
b.所有类都有一个默认的直接或间接继承的父类叫Object
c.一个类只能有一个父类,但是一个父类可以有多个子类
3.要点
a.子类中的成员变量名与父类中变量名相同时
会因为就近原则(变量名覆盖?),调用的是子类自己本身的成员变量
所以在有父子类关系的类中,尽量不要出现同变量名
(可使用super关键词来调用父类中的同名变量)
b.子类中可以引用父类的对象
c.创建子类对象之前,会先创建父类对象
子类加载之前,会先加载父类
查看方法:构造器
d.子类对象调用方法,有方法重写则调用自己的方法,否则调用从父类继承过来的方法(就近原则)
4.Super关键词
super:父类对象
1.在子类构造方法中的一定会先调用父类的无参构造方法
即在子类构造方法中默认添加super()
2.如果父类没有无参的构造器,则需要在子类中手动调用父类的有参构造器
3.super()需要放在子类构造方法的第一行,与this()相似,所以两个不能同时存在
4.规范写法,类中手动添加无参构造器
5.方法重写
前提:必须存在父子类关系
子类中重写父类定义的方法
方法的方法名/方法的返回值/方法的修饰符/方法的参数,必须完全一致才能实现方法的重写
6.抽象类:abstract
1.抽象类:
a.使用abstract修饰的类叫作抽象类
b.一个抽象类中可以有多个抽象方法也可以没有
c.抽象类不能实例化,需要继承他的非抽象类的子类才可以实例化
d.抽象类有构造方法,方便子类使用
2.抽象方法
a.使用abstract修饰的方法
b.抽象方法没有方法体
c.非抽象类的子类继承抽象类的父类需要全部重写父类中的抽象方法
3.成员变量(?待定:所有变量)不能由abstract修饰
4)判断:
有抽象方法的类叫做抽象类 √
抽象类就是有抽象方法的类 ×
抽象类中可以存在抽象方法 √