方法覆写
腹泻 = 重写(override)
public class Person {
public void show(String name){
System.out.println("父类");
}
}
public class Teacher extends Person {
public void show(String name){
System.out.println("子类");
}
}
public class Test {
public static void main(String[] args) {
Teacher teacher = new Teacher();
teacher.show("");
}
}
输出结果:子类
看上面代码,就是用子类的方法覆盖的父类的方法
但是当父类的方法是私有的那就不能覆盖了,子类调用的就是自己的方法了而不是覆写的。
方法覆写的限制
访问权限:对于访问控制权限现在已经接触过三种:public > default(默认) >private
Override(重写)
- 只能发送在有继承关系的类中
- 方法名,方法返回值,方法参数列表都要相同
- 在子类中的重写方法访问修饰符不能大于父类
Overloaging(重载)
- 在同一个类中
- 方法名相同,参数个数或者类型不同,没有返回值类型
- 与访问权限无关
属性覆盖
例子:
public class Person {
public String name = "父类";
}
class Teacher extends Person {
public String name = "子类";
public void show(){
// System.out.println(super.name); //父类
System.out.println(this.name); //子类
}
}
输出:
public class Test {
public static void main(String[] args) {
Teacher teacher = new Teacher();
teacher.show();
}
}
用this关键字的话拿到的就是子类本身的的属性
用super关键字就会拿到父类的属性,当然如果父类属性是私有的就会报错
final关键字
final修饰类
- 类不能被继承,被final修饰的类没有子类,类里的方法和属性也不能被覆写
final修饰方法
- 被修饰的方法不能被子类覆写,和被private修饰一样。
- 但是可以被重载
final修饰变量
- 被final修饰的基本变量,值就不能再被改变了
- 被final显示的引用变量,内容可以改变,但是引用地址不能改变。
final修饰参数
+被final修饰的参数只能调用,不能被改变