目录
--------------------------------------------------------------------------------------
什么是方法的重写
java中方法的重写只发生在继承关系中,指子类对父类中存在的方法的方法体进行重新编写。
子类中方法的名称、返回值类型、参数列表与父类相同,只有方法体中的代码不同
代码演示
public class Person{
public void a(){
}
}
public class Student extends Person{
public void a(){
System.out.println("");
}
}
我们定义了一个person父类和一个学生子类,并让子类继承了父类,这时就可以在子类中重写父类中的方法,对父类方法的功能进行扩展
不能重写的方法
那么在父类中那些方法不能被重写呢?
1,被static修饰的方法不存在被重写
被static修饰的方法属于静态属性,静态的东西是和类一起出现的,而继承和重写是对象的事,所以static修饰的方法不存在重写这个概念
2,被private修饰的方法不能被重写
因为被private修饰的方法只能在本类中访问所以私有的方法不能被重写
3,构造方法不能被重写
因为构造方法的名字必须和类名完全相同,所以构造方法不能在子类中重写
4,被final修饰的方法不能被重写
final是Java中的关键字,意为最终的,我们下面就来看看什么是final关键字
--------------------------------------------------------------------------------------
final关键字
作为一个关键字final可以修饰属性,方法和类
1,final修饰属性
被final修饰的属性名为常量,其值只能赋值一次并且不能被改变
常量在命名时通常采用全部大写
public class Person{ private final int MAX = 100000; }
在上述代码中我们就定义了一个常量
2, final修饰方法
final修饰的方法名为最终方法,该方法不能被子类重写
代码演示
public class Person{ public final void a(){ } } public class Student extends Person{ public void a(){ System.out.println(""); } }
上述代码中父类的a方法是最终方法,所以在子类中重写方法会报错,这也解释了为什么被final修饰的方法不能被重写
3,final修饰类
被final修饰的类称为最终类,该类不能被继承没有子类(也就是太监类),但是最终类可以有父类
代码演示
public final class Person{ public void a(){ } } public class Student extends Person{ public void a(){ System.out.println(""); } }
上述代码会报错,因为person是最终类,所以student类不能继承它