Java中重写的认识

1,为什么要重写

也就是在父类中的条件无法满足子类新事物种类个性增加的需求,需要子类跟具自己的实际情况对父类的方法进行适应自己情况的情况进行改写,从而适应新事物的要求。也就是父类无法准确描述子类的行为特征了,那就谁有什么特点谁自行添加。
Java中重写的认识_第1张图片
Java中重写的认识_第2张图片

2,重写的要点

1,方法名相同,参数列表相同(个数和数据类型相同)
2,在访问权限上有public,proctected,friendly,private重写后的方法权限只能比父类的大或者相同。
在这里插入图片描述否则就会报错父类为public,子类中为不添加任何权限的系统会自己默认为friendly权限,public权限最大则出项了错误。
3,返回值:如果父类方法返回值为void或者是基本数据类型(byte,short,int,long,float,double,char,boolea),则子类的重写返回类型要与父类的保存一致。
如果父类方法的返回值为引用类型,则子类重写后的方法返回类型要么是父类方法返回值的子类,不能使用基本数据类型。
其中object是所有对象的父类,String 为一种类。
4,但在父类中被final和static所修饰的方法中不能被子类重写,final修饰的方法能被继承,但final成员变量可以被继承,static,final的方法是可以被子类所继承的,,static修饰的方法无法重写父类中的同名的静态方法呈现多态性,子类和父类中同名的static变量和方法都是相互独立的,并不存在任何的重写关系详述static的解释关于子类的继承。(https://blog.csdn.net/qq_38584967/article/details/78504131
)final关键字可以用来修饰类,方法,变量。final修饰的类是不可以被继承的,他修饰的变量是常数,不允许二次赋值。子类是可以继承父类某些方法和属性,但加private方法是不能继承的,但final 定义的变量必须要有初始值,有fianl修饰的系统不会自行初始化。static优先于对象存在,因为static成员随着类的加载就已经存在,static修饰的成员多一种调用方式,可以被类名调用(可以节省空间要但调用时)(类名.静态成员)
static修饰的数据是共享数据,对象中的存储是特有数据。

5,在重写中不能在重写的方法前加static。
6,在子类重写的方法前加上@Overrride注释(方便写法为加上@o在按alt和/键)可以判断当前方法是否重写了父类的某个方法,如果在方法上加上注释没有出错,则说明重写了父类方法,否则没有重写父类方法。
Java中重写的认识_第3张图片

3.在调用方法上的注意点

在子类调用父类上,如果子类中的属性与父类中属性重复,则子类对象调用该属性使用的是子类属性
同理在子类重写父类的方法,子类对象调用该方法也是子类的方法。
Java中重写的认识_第4张图片
在这里插入图片描述
在继承上,如果在想继承调用父类中的属性值则在子类中非静态方法或者是代码块使用的是supper.调用的东西,如果在子类中的静态方法或者是静态代码块中调用父类中的属性就得创建父类的对象了new.Father().调用的东西,要是子类已经重写了父类中的方法在想调用父类中的成员方法或者属性在非静态的用super.在静态的用new Father().进行调用。
Java中重写的认识_第5张图片

你可能感兴趣的:(Java中重写的认识)