八、方法的重写


1.重写规则
在具有继承关系的两个类中,子类中的方法满足以下条件,称为子类重写了父类的方法
a.方法名相同
b.参数必须相同
c.子类方法的返回值的类型必须和父类方法返回值的类型相同或者是父类方法返回值类型的子类
d.子类方法的访问权限修饰符必须大于等于父类方法的访问权限修饰符
e.如果父类中的方法被static修饰,子类中重写的方法也被static修饰

@Override是一个注释,没有实际意义,写不写不影响重写如果加上了@Override,系统会先去检查是否真的在重写

总结:
方法重写和重载的区别
a.重载Overload,重写Override
b.重载要求在同一个类中
重写要求在具有继承关系的两个类中
c.重载的时候要求方法名相同,参数不同,返回值没有影响
重写的时候要求方法名相同,参数相同,返回值相同或者是子类
d.重载中对于权限修饰符没有要求
c.重写对于权限修饰符有要求:必须保证子类的权限大于等于父类中的权限


2.final关键字

final:最终的意思,是一个修饰符,但是和访问权限修饰符没有关系
作用:可以用来修饰类,变量和方法,表示不可变



1>final修饰类
表示这个类不能被继承
2>final修饰方法
表示这个方法不能被重写,可以被继承【老老实实继承,不允许篡改】。
被final修饰的方法可以被重载,也可以被子类对象调用

3>final修饰变量
a.被final修饰的变量就相当于是一个常量
b.被final修饰的成员变量,系统将不在提供初始值,所以在使用之前一定要手动初始化
静态成员变量:可以再声明的时候直接赋值,或者在静态代码块中赋值
非静态成员变量:可以在声明的时候直接赋值,或者在构造代码块中赋值,构造方法中赋值。
c.被final修饰的局部变量,初始值一旦给定,将不能再发生改变



思考题:
final修饰基本数据类型和引用数据类型之间的区别
a.当final修饰基本数据类型变量的时候,不能在对变量重新赋值,因为基本数据类型不能发生改变
b.当final修饰引用数据类型变量的时候,对引用变量不能在重新赋值,但是可以改变这个引用变量指向的内容

总结:
a.对于基本数据类型的变量,命名需要全部大写,不同单词之间使用下划线分隔
b.对于引用数据类型,不需要遵循常量命名法

原文地址:https://www.cnblogs.com/lsp-lsp/p/7341932.html