面向对象之继承05(属性覆盖)

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

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的区别?

No. 区别 this super
1 功能 调用本类构造、本类方法、本类属性 子类调用父类构造、父类方法、父类属性
2 形式 先查找本类是否存在调用的结构,如果有则直接调用,否则去父类中查找 不查找子类,直接调用父类
3 特殊 表示本类的当前对象 -

在开发之中,对于本类或者父类的操作强烈建议加上"this"或者"super"这样好区分
总结
1.只要发生了继承关系,那么就一定会存在覆写的应用,覆写的应用以方法为主
2.如果子类使用父类指定的方法,但是发现父类的方法实现不能够满足子类要求时使用覆写类的功能,同时保留父类的方法名称
3.被子类覆写的方法不拥有比父类更严格的访问控制权限

原文地址:https://www.cnblogs.com/anyux/p/11898953.html