百木园-与人分享,
就是让自己快乐。

【java】学习路线-10

/*
关于修饰符:
类:public default
                public protected default private
same class          √           √        √        √
same package      √           √        √        ×
subclass          √           √        ×        ×
dif    package          √           ×        ×        ×

#但是需要注意的是:如果想使用defualt修饰方法和变量的是时候,
不需要写default,不写就是默认default
*/
import com.remoo.test.Learn09_Test;
public class Learn09{
    public static void main(String[] aa){
        //Remoo.P_hello=\"111\";
        //System.out.println(P_hello);
        //如果是private,则不能通过不同的类访问
        
        //Remoo.hello=\"你好\";
        System.out.println(Remoo.hello);//可以输出
        //证明default可以通过不同类访问
        
        System.out.println(Test.hello);//可以输出
        //证明default可以在同一个包内调用
        
        //Test.Son_Protected_hello = \"hello\";
        System.out.println(Test.Son_Protected_hello);//可以输出
        //通过子类访问子类自身的protected属性
        System.out.println(Test.Fat_Protected_hello);//可以输出
        //通过子类访问父类的protected属性
        //System.out.println(Remoo.Son_Protected_hello);//不能通过父类找子类
        System.out.println(Remoo.Fat_Protected_hello);//可以输出
        //访问父类中的protected属性
        
        //测试就近原则-父类子类的优先性
        System.out.println(Remoo.Same_Test);//fat
        System.out.println(Test.Same_Test);//son
        
        //访问另一个包
        Learn09_Test.main(null);
        //System.out.println(Learn09_Test.welcomeWord1);
        //System.out.println(Learn09_Test.welcomeWord2);
        //System.out.println(Learn09_Test.welcomeWord3);
        //上面三个都不行。只有public的才可以通过不同的包访问
        System.out.println(Test1.callDifPackageProtected());
        System.out.println(Learn09_Test.welcomeWord4);//public可以访问
        
        //但是protected可以在不同包中但是有继承关系的类中使用
        //要在不同包中想要访问其protected的成员,必须要继承之后才能用
        System.out.println(Test.callSuperClassProtected());
        
        
    }
    
}
class Test1 extends Learn09_Test{
    static String callDifPackageProtected(){//protected可以在不同包中的继承对象中访问
        return welcomeWord3;
    }    
    //default不可以在不同包中访问
    //static String callDifPackageDefault(){
    //    return welcomeWord2;
    //}
}

class Test extends Remoo{
    protected static String Son_Protected_hello=\"子类中的protected\";
    static String Same_Test=\"son\";
    
    static String callSuperClassProtected(){//子类调用父类的protected
        return Fat_Protected_hello;
    }

}

class Remoo{//父类
    private static String P_hello = \"父类中的private\";
    static String hello = \"父类中的default\";
    protected static String Fat_Protected_hello=\"父类中的protected\";
    static String Same_Test=\"fat\";
}


来源:https://www.cnblogs.com/remyuu/p/15987796.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 【java】学习路线-10

相关推荐

  • 暂无文章