属性覆盖
如果说现在子类定义了和父类完全相同的属性名称时,称为属性的覆盖
观察属性覆盖
class A{
public String str="Hello";
}
class B extends A{
public int str=100;
public void print(){
System.out.println(str);
System.out.println(super.str);
}
}
public class testDemo{
public static void main(String args[]){
B b = new B();
b.print();
}
}
一直强调,在任何开发之中,类中的属性必须封装(99%),封装之后,是没有意义的,因为父类定义的私有属性子类无法调用
比较:关于super和this的区别?
1 | 功能 | 调用本类构造、本类方法、本类属性 | 子类调用父类构造、父类方法、父类属性 |
2 | 形式 | 先查找本类是否存在调用的结构,如果有则直接调用,否则去父类中查找 | 不查找子类,直接调用父类 |
3 | 特殊 | 表示本类的当前对象 | - |
在开发之中,对于本类或者父类的操作强烈建议加上"this"或者"super"这样好区分
总结
1.只要发生了继承关系,那么就一定会存在覆写的应用,覆写的应用以方法为主
2.如果子类使用父类指定的方法,但是发现父类的方法实现不能够满足子类要求时使用覆写类的功能,同时保留父类的方法名称
3.被子类覆写的方法不拥有比父类更严格的访问控制权限