属性覆盖
如果说现在子类定义了和父类完全相同的属性名称时,称为属性的覆盖
观察属性覆盖

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.被子类覆写的方法不拥有比父类更严格的访问控制权限

12-29 12:04
查看更多