1.继承中成员变量的特点
A:子类只能获取父类非私有成员
子父类中成员变量的名字不一样直接获取父类的成员变量
子父类中成员变量名字是一样的获取的是子类的成员变量
B:就近原则:谁离我近我 就用谁
如果有局部变量就使用局部变量
如果没有局部变量,有子类的成员变量就使用子类的成员变量
如果没有局部变量和子类的成员变量,有父类的成员变量就使用父类的成员变量
C: super:可以获取父类的成员变量和成员方法,this当前类的引用
2.方法重写&方法重载
方法的重写:在子父类当中,子类的方法和父类的完全一样,子类重写了父类的方法(覆盖),当子类重写了父类的方法之后,使用子类对象调用的就是子类的方法
方法的重载:在一个类中,有多个重名的方法,但是其参数不一样(参数的个数,参数的类型,参数的顺序),和返回值无关
3.继承中构造方法的执行顺序*
继承中构造方法的执行顺序
在子父类中,创建子类对象,调用子类的构造方法,
在子类的构造方法的第一行代码如果没有调用父类的构造或者没有调用子类的其他构造,则默认调用父类无参构造
为什么要调用父类构造?
因为需要给父类的成员变量初始化
肯定会先把父类的构造执行完毕,在去执行子类构造中的其他代码
我是父类无参构造 --- 我是子类有参构造 --- 我是子类无参构造
4.this与super区别*
this:当前对象的引用
调用子类的成员变量
调用子类的成员方法
在子类的构造方法第一行调用子类其他构造方法
super:子类对象的父类引用
调用父类的成员变量
调用父类的成员方法
在子类的构造方法第一行调用父类的构造方法
5.匿名对象
匿名对象:没有名字的对象
匿名对象的应用场景:
* 当方法只调用一次的时候可以使用匿名对象
* 可以当作参数进行传递,但是无法在传参之前做其他的事情
* 注意:匿名对象可以调用成员变量并赋值,但是赋值并没有意义
*/
public class AnonymousObejctDemo {
public static void main(String[] args) {
//Student s = new Student();
//s.study();
//s.study();
//new Student();//匿名对象,没有变量引用的对象
//new Student().study();
//new Student().study();
6.final关键字
final: 修饰符,可以用于修饰类、成员方法和成员变量
final所修饰的类:不能被继承,不能有子类
final所修饰的方法:不能被重写
final所修饰的变量:是不可以修改的,是常量
常量:
字面值常量:1,2,3
自定义常量:被final所修饰的成员变量,一旦初始化则不可改变
注意:自定义常量必须初始化,可以选择显示初始化或者构造初始化
7.抽象类
abstract:关键字,用于修饰方法和类
抽象方法:不同类的方法是相似,但是具体内容又不太一样,所以我们只能抽取他的声明,没有具体的方法体,没有具体方法体的方法就是抽象方法
抽象类:有抽象方法的类必须是抽象类
* 注意:一个类继承了抽象类需要重写他所有的抽象方法,否则这个类就得是抽象类
特点:
抽象方法只能在抽象类里面
抽象类和抽象方法必须被abstract修饰
抽象类不能创建对象(不能实例化)
抽象类中可以有非抽象的方法
抽象类和类的关系也是继承
一个类继承了抽象类要么重写所有的抽象方法,要么他自己是抽象类