Java是单继承,只能继承一个父类
子类可以访问父类非私有成员
父类不可以访问子类特有成员
方法重载:
1. 同一个类中
2. 方法名相同,参数列表不同(参数顺序、个数、类型)
3. 方法返回值,访问修饰符任意
4. 与方法的参数名无关
方法重写:
1. 有继承关系的子类中
2. 方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值与之相同,允许是子类类型
3. 方法的访问修饰符是允许有变化的(访问范围需要大于等于父类的访问范围)
4. 与方法的参数名无关
当子类重写父类方法后,子类对象调用对的是重写后的方法
在子类中,可以定义与父类重名的属性的。
访问修饰符:
private:只允许在本类中进行访问
public:允许在任意位置访问
protected:允许在当前类,同包下的子类/非子类访问,跨包子类可访问,跨包非子类不允许访问
默认:允许当前类,同包下的子类/非子类访问,跨包子类/子类都不允许访问
super:父类对象的引用
父类的无参构造方法是不允许被继承,所以不允许被重写,但是会影响子类对象的实例化
继承的初始化顺序:
父类静态成员->子类静态成员->父类对象构造->子类对象构造
访问修饰符不影响成员加载顺序,跟书写位置有关
super关键字的使用:
访问父类成员方法:super.方法名
访问父类属性:super.属性名
访问父类构造方法:super();
子类的构造过程中必须调用其父类的构造方法
如果子类的构造方法中没有显示标注,则系统默认调用父类无参的构造方法
如果子类构造方法中即没有显示标注,且父类中没有无参构造方法,则编译出错
super( );可以通过super调用父类允许被访问的其他指定构造方法
super();必须放在子类构造方法有效代码的第一行
super和this的比较:
this:当前类对象的引用
访问当前类的成员方法
访问当前类的成员属性
访问当前类的构造方法
不能在静态方法中使用
super:父类对象的引用
访问父类的成员方法
访问父类的成员属性
访问父类的构造方法
不能在静态方法中使用
构造方法调用时,super和this不能同时出现(怎么同时出现在有效代码第一行啊哈哈哈)