package com.fea.test.init;
public class Father_variable {
public static String static_var="Father_static_var";
public String public_var="Father_public_var";
String friendly_var="Father_friendly_var";
private String private_var="Father_private_var";
public String getPrivate_var() {
return private_var;
}
public void public_method() {
System.out.println("Father_public_method");
}
private void private_mehod(){
System.out.println("Father_private_mehod");
}
protected void protect_method(){
System.out.println(friendly_var);
System.out.println("Father_protect_method");
}
public void dp(){
private_mehod();
}
}
子类:
package com.fea.test.init;
public class Child_variable extends Father_variable{
public static String static_var="Child_static_var";
public String public_var="Child_public_var";
String friendly_var="Child_friendly_var";
private String private_var="Child_private_var";
public String getPrivate_var() {
return private_var;
}
public void public_method() {
System.out.println("Child_public_method");
}
private void private_mehod(){
System.out.println("Child_private_mehod");
}
protected void protect_method(){
System.out.println("Child_protect_method");
}
public void dp(){
System.out.println(public_var);
}
public static void main(String[] args) {
Father_variable cv= new Child_variable();
System.out.println(cv.public_var);
System.out.println(cv.static_var);
cv.dp();
cv.protect_method();
cv.public_method();
/**
*
属性是按类型(句柄)去访问的,方法是按对象访问的
*这里提出的覆盖并不是传统意义的覆盖,只是父类的属性或者方法隐藏了而已,隐藏的程度与关键字public,protect,private有关
*如果要调用父类的属性或者方法,可以用super.
1. 由于private变量受访问权限的限制,它不能被覆盖。
2. 属性的值取父类还是子类并不取决于我们创建对象的类型,而是取决于我们定义的变量的类型。
3. friendly、protected和public修饰符并不影响属性的覆盖。
4. 静态变量和静态常量属于类,不属于对象,因此它们不能被覆盖。
5. 常量可以被覆盖。
6. 对于基本类型和对象,它们适用同样的覆盖规律。
7.在方法中访问属性时,访问的是该对象的属性,如果该对象没有该属性,访问的则是父类对象的属性
*/
}
}