旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

关于java中继续类的权限问题的细致引见【JAVA教程】,java,继承类,权限

作者:搜教程发布时间:2019-11-30分类:JAVA教程浏览:20评论:0


导读:在Java中有一个比较轻易疏忽的问题,那就是继续类的权限与基类的权限之间的关联。由于日常平凡在运用继续类的时刻,大概很少会需要到修正基类的接见权限控制符,而是直接运用基类的接见...

在Java中有一个比较轻易疏忽的问题,那就是继续类的权限与基类的权限之间的关联。由于日常平凡在运用继续类的时刻,大概很少会需要到修正基类的接见权限控制符,而是直接运用基类的接见权限控制符。

假如基类有属性要领是private的,那末子类是不是能够修正为protected,假如是protected,那末子类是不是能够修正为public或许private呢?接下来就看一下这个问题。

相干视频教程引荐:java教授教养视频

一、基类要领为private

起首,假如基类的属性要领是private的,那末子类可否修正为protected或许public呢?答案是不是定的,这个答案略加推理就可以得出来,既然基类的属性要领是private的,那末他关于子类就不可见,既然子类都不可见,怎样还能修正基类要领的权限控制符呢。

我们能够用一段代码来考证这个问题:

/*BaseClass.java*/
public class BaseClass {
    private void test() {}
}
 
/*ExtendClass.java*/
public class ExtendClass extends BaseClass {
    //@Override 
    protected void test() {}
}

上面的代码假如将注解去掉,那末就会报错,提醒找不到要领,由于基类的要领的private的,假如去掉注解就没有问题,但此时子类的test()要领与基类的test()要领是两个完整没有关联的要领。

二、基类要领为friendly

假如基类要领为friendly,即为默许的权限,那末就分为两种状况,一种是子类与基类处于统一包内,一种是子类与基类不在统一包内。当子类与基类在统一包内的时刻,是能够将权限控制符扩大为protected或许public的:

/*BaseClass.java*/
package demo1;
public class BaseClass {
    void test() {}
}
 
/*ExtendClass.java*/
package demo1;
public class ExtendClass extends BaseClass {
    @Override 
    protected void test() {}
}

上述两个类都在包demo1下,代码能准确运用。然则当子类与基类不在统一包的时刻,状况就不一样了:

/*BaseClass.java*/
package demo2.demo1;
public class BaseClass {
    void test() {}
}
 
/*ExtendClass.java*/
package demo2;
public class ExtendClass extends BaseClass {
    //@Override 
    protected void test() {}
}

假如子类与基类不在统一包,那末就不能扩大默许权限,缘由实在与private一样,子类不能瞥见基类的要领,因而也就不能扩大要领的权限控制符。

三、基类要领为protected

假如基类的要领为protected,那末子类就可以够将接见控制符扩大为public:

/*BaseClass.java*/
package demo2.demo1;
public class BaseClass {
    protected void test() {}
}
 
/*ExtendClass.java*/
package demo2;
public class ExtendClass extends BaseClass {
    @Override 
    public void test() {}
}

四、总结

实在想要弄清扩大的状况很轻易,记着下面这个原则:理论上说子类是能够扩大基类的接见权限控制符,然则不能减少基类的接见权限控制符,而且仅当子类能瞥见基类的要领的时刻能够扩大。

想进修更多相干教程能够接见:java零基本入门

以上就是关于java中继续类的权限问题的细致引见的细致内容,更多请关注ki4网别的相干文章!

标签:java继承类权限


欢迎 发表评论: