黑马程序员技术交流社区
标题:
关于继承中的权限问题
[打印本页]
作者:
糯米酿酒
时间:
2013-7-21 10:55
标题:
关于继承中的权限问题
本帖最后由 杨兴庭 于 2013-7-21 22:56 编辑
类继承的继承有两种权限,一种是public,一种是默认的,public权限大于默认权限,当子类public继承父类,而父类中有的成员是默认权限时,那么子类创建对象能不能够调用父类中的默认权限的成员呢?
作者:
梦想蓝色天空
时间:
2013-7-21 11:13
默认的权限是protected包级访问,也就是如果父类中的成员变量和方法是这个类型的时候,在同一个包中以及子类中都是可以访问的,如果子类覆盖父类的protected权限的方法的时候,权限只能是protected或比protected大,不能降低他的权限。。。所以只要父类的方法和属性是protected的,同一个包中的类或子类都是可以访问的
作者:
yangqing
时间:
2013-7-21 11:28
protected是保护的,只有他自身或者继承他的类可以用,public是共有的 权限比protected大 子类覆盖父类时要求子类权限比父类大或相等,子类创建对象是可以调用父类的。
作者:
郭俊
时间:
2013-7-21 11:32
本帖最后由 郭俊 于 2013-7-21 11:35 编辑
可以的,private的不能调用
子类覆盖父类时,必须要保证覆盖方法的权限大于等于被覆盖的方法的权限。
【权限】——public ,private , 默认权限(小于公有大于私有) ;默认权限即protected,在当前类、同一包、子孙类都可以调用,其他包不行
package it.ima.test;
class Phone
{
void show()
{
System.out.println("number");
}
void call()
{
System.out.println("我想给,女朋友打个电话!");
}
}
class NewPhone extends Phone
{
void show()
{
System.out.println("name");
super.show(); <font color="#ff0000">//这里覆盖了父类的,在里面调用父类的成员方法,同级protected</font>
}
}
class ExtendsDemo
{
public static void main(String[] args)
{
NewPhone p = new NewPhone();
p.show(); //<font color="#ff0000">同包中调用</font>
}
}
复制代码
作者:
杨兴庭
时间:
2013-7-21 11:59
子类继承父类中非私有的属性和方法。。。。。
作者:
薛鹏鹏
时间:
2013-7-21 12:16
当然能调用了,子类覆盖父类时要求子类权限比父类大或相等。 子类继承父类就是为了调用父类中的方法(除了父类中被私有的)。
子类是在父类基础上的扩展
作者:
hoyouly
时间:
2013-7-21 21:26
你说的成员应该指的成员函数吧!因为成员变量是不能被继承的,如果父类的成员函数是默认的,子类继承后成为public 那么就相当于把父类的成员函数给覆盖掉了,所以子类调用也是调用子类的成员函数,而不是父类的默认成员函数!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2