继承体系:
子类访问某个属性的时候,首先会在本类中查找,如果本类中存在那么就直接使用本类中的属性或方法,否则会去父类中查找,如果父类中未找到该属性,那么会去祖先类查找,如果祖先类都没有,那么会直接报错,所有类的根级父类为Object。
super关键字:
用于引用父类对象(属性、方法)
1.访问被子类隐藏的父类成员
子类中若存在于父类相同的属性和方法,那么父类中的属性和方法就会被隐藏,这个隐藏的属性或方法就必须采用super关键字访问
2.调用父类的构造方法
super调用构造方法
子类构造器使用super()方法时必须放在构造器方法的第一行。
super关键字调用的是父类的构造方法,并且调用的构造方法中的参数列表必须和父类中的某个构造方法参数列表完全匹配,才能实现调用。
构造方法:
如果没有给当前类声明构造方法,那么系统会默认给一个无参构造方法,这个是隐式操作,如果自己定义了构造方法(带参或者不带参),那么系统将不会自动创建默认无参构造方法。
调用规则:
1.按继承关系,构造方法是从父类向下进行调用的
2.如果子类没有构造方法,则它默认调用父类无参的构造方法,如果父类中没有无参的构造方法,则将产生错误(前提:系统会为每个类分配一个默认的无参构造方法,隐式分配,如果你显示声明了任意一种构造方法,那么系统将不会再提供默认的构造方法)。
3.如果子类有构造方法,那么创建子类的对象时,先执行父类的构造方法,再执行子类的构造方法。
4.子类如果在构造方法中没有显示的去调用super()方法,那么系统会在构造方法的第一行默认提供一个super()方法;
方法重载:
在一个类中存在两个或两个以上的具有相同方法名,但是参数列表不同的方法,称为方法重载。
与返回值、修饰符无关。
方法重写:
重写仅发生在具有继承关系的类中。
在子类继承父类中,子类的方法和父类的方法相同(访问修饰符、返回值类型、方法名、参数列表),方法体不同,这种子类的方法将父类的方法覆盖叫做重写。
目的:
父类的功能无法满足子类的需求,子类自定义扩展父类的功能。
约束规则:(一般要求父类和子类的方法声明完全一样,方法体可以不一样)
方法名与形参列表要保持一致
子类的权限修饰符 >= 父类的权限修饰符
子类返回值类型 <= 父类返回值类型
子类抛出异常类型 <= 父类抛出异常类型
final关键字:
修饰变量:(这个变量就被称之为常量)
final修饰的变量必须要初始化,赋值后不能够重新赋值(即变量不能够发生改变);
(不能发生改变:)
对于基本数据类型来说,是指变量的值不能发生改变;
对于引用数据类型来说,是指变量对象引用不能发生改变;
修饰方法:
被final修饰的方法不能够被覆盖
修饰类:
被final修饰的类不能够被继承,即为最终类
并且这个类中的所有方法都默认被final修饰
常见的final类:Math/String
访问修饰符:
访问级别 修饰符 可访问类型
公开 public 项目中的所有地方都可访问
受保护 protected 同类、同包、子类
默认 default 同类、同包
私有 private 同类