- 继承基本概念
- 继承关系可以解决代码的重复问题。
- 单继承;不能多重继承,允许多层继承。
- 继承类图表示:实线箭头,箭头指向父类。
- 子类无法直接访问父类的私有属性,但可以间接访问(getter方法)。
- 子类对象实例化过程中,默认先调用父类的构造方法,再调用本类的构造方法。
- 方法的覆写
如果一个父类使用private声明的方法,子类中使用default权限算是覆写吗
- 父类和子类均为default权限
public class TestExtends {
public static void main(String[] args) {
Student stu = new Student();
stu.fun();
}
}
class Person {
void print() {
System.out.println("父类方法");
}
public void fun() {
this.print();
}
}
class Student extends Person {
void print() {
System.out.println("子类方法");
}
}
输出为:
子类方法
分析:此时print()方法被覆写,故调用的是子类的print()方法
- 父类为private权限、子类为default权限
public class TestExtends {
public static void main(String[] args) {
Student stu = new Student();
stu.fun();
}
}
class Person {
// 添加private权限
private void print() {
System.out.println("父类方法");
}
public void fun() {
this.print();
}
}
class Student extends Person {
void print() {
System.out.println("子类方法");
}
}
输出为:
父类方法
分析:此时子类的print()方法并不是父类中private修饰的print()方法的覆写。
小结:父类方法如果用private修饰,则此方法不能被覆写。
- 方法重载和方法覆写的区别
区别点 | 方法重载 | 方法覆写 |
---|---|---|
定义 | 方法名称相同,参数类型或个数不同 | 方法名称,参数名称,返回值类型全部相同 |
权限 | 无要求 | 子类中方法不能拥有比父类更严格的权限 |
范围 | 一个类中 | 继承类中 |
- this 和 super 区别
区别点 | this | super |
---|---|---|
属性方法 | 由近及远,先从本类找,若没找到再从父类找 | 直接从父类找 |
调用构造 | 调用本类构造,必须写在首行 | 调用父类构造,必须写在子类构造首行 |
其他 | 当前对象 | -- |
注:因为 this 和 super 关键字都可以调用构造方法,并且调用时都必须放在构造方法首选,故不能同时出现
- final 关键字
- 类:不能有子类
- 属性:为常量。static final声明全局常量
- 方法:不能被子类所覆盖
网友评论