【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";
}
最新文章
- POJ1149 PIGS [最大流 建图]
- git 查看生成对象
- Cron表达式简单学习
- JqueryEasyUI教程入门篇
- Oracle自增主键的添加[sequence]--表数据已存在
- cocos中使用VS自动创建工程的方法
- JS操作文件
- Model First:创建实体数据模型(ADO.NET 实体数据模型)
- Java 覆盖测试工具 :EclEmma
- git gitk命令
- 结构-行为-样式-Js排序算法之 快速排序
- WebSocket和kafka实现数据实时推送到前端
- cxf,两个声明导致 ObjectFactory 类中发生冲突
- Windows激活
- 第34章:MongoDB-索引--用户管理
- sqlserver 日志传送
- Linux基础命令---paste
- VisualStudio“在查找预编译头使用时跳过";解决方案
- Unity发布安卓Splash Image适应手机、平板
- 通过vue-cli3构建一个SSR应用程序
热门文章
- 【Redis】集群数据迁移
- tensorflow版本的bert模型 GPU的占用率为100%而其利用率为0%
- HTML,CSS,JS,DOM,jQuery
- JS中通过id或者class获取文本内容
- 动态树 — Euler_Tour_Tree
- Springboot 整合 MongoDB
- 内存分析器 (MAT)
- 广西省行政村边界shp数据/广西省乡镇边界/广西省土地利用分类数据/广西省气象数据/降雨量分布数据/太阳辐射数据
- Tapdata 肖贝贝:实时数据引擎系列(四)-关于 Oracle 与 Oracle CDC
- Visual Studio 生产环境配置方案:SlowCheetah