62,616
社区成员
发帖
与我相关
我的任务
分享
class base{
protected static String p="123";
public static String getP(){return p;}
public static void setP(String a){p=a;}
public static String test(){return p+"test";}
}
class sub extends base{
private static String p="abc";
//public static String getP(){return p;}
}
class test{
public static void main(String[] a){
//base.setP("123");
//sub.setP("abc");
System.out.println(base.getP());
System.out.println(sub.getP());
}
}
class base{
protected static String p="123";
public static String getP(){return p;}
public static void setP(String a){p=a;}
}
class sub1 extends base{//将继承base类所有可继承的属性和方法,类毫无意义}
class sub2 extends base{
private static String p="abc";
//public static String getP(){return p;}
//定义自己的p属性,这个属性和父类base的p属性毫无关系。
/**
* 继承了所有base类的可继承的不包含p的属性和方法。问题在这里:
* 1.首先可以肯定有getP和setP方法,但这两个方法操作的P却不知道是base的还是sub2的。
* 2.如果定义了自己的getP和serP方法,将隐藏base的get和set方法。那么sub2和base都有自己的set和get方法。
* 3.在外面调用时,用 "类名.可访问方法或属性" 来访问(调用)属性(方法)。类似第一点,如果静态属性是外面无法访问的,而提供一个外面可访问的方法去操作属性,那么继承并没有起到预想的效果。
*
* 综合前面,是否可以这样说,静态属性和方法能继承,但应该称之为"伪继承"。这种继承没有意义??
*/
}
class test{
public static void main(String[] a){
//base.setP("123");
//sub.setP("abc");
System.out.println(base.getP());
System.out.println(sub.getP());
}
}
class sub extends base{
private static String p="abc";
public static String getP(){return p;}
}