Java 访问修饰符使用规则
2024-09-17 15:51:05
作用域 | 当前类 | 同一package | 子孙类 | 其他package |
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
friendly | √ | √ | × | × |
private | √ | × | × | × |
1. 对于类:
类如果不写修饰符,默认是 friendly 的。Java 中并没有 friendly 修饰符的声明。
friendly 类型说明子类如果和此类不在同一包中是不可见的,简单说就是只有同一包中才可见。
protected 类型说明同一包中一定可见,但不同包中的子孙类中也可见,所以和 friendly 有区别。
普通类不可以用 private 和 protected 来修饰,但内部类可以。
- 内部类的详细解释请看这篇文章:http://lavasoft.blog.51cto.com/62575/179484/
内部类的简单总结:
- 内部类的分类:
- 普通内部类
- 方法内部类 (只存在于某个方法中)
- 匿名类,比如 new Thread(){}
- 静态内部类,static class,它不能访问外部类的非静态成员。要创建静态内部类对象时候,也不需要外部类对象了,直接可以 new 外部类名.内部类构造方法
- 接口内部类
public interface AInterface {
void readme();
//接口内部类默认是 static 的
class Inner1 implements AInterface {
public void readme() {
System.out.println("我是一个接口内部类");
}
}
} class Main {
public static void main(String[] args) {
AInterface.Inner1 in1 = new AInterface.Inner1();
in1.readme();
}
}
- 内部类的特点:
- 内部类可以是 public,private 或 protected 的。
- 内部类可以直接访问外围类的成员和方法。
- 创建内部类:
Outer outer = new Outer();
//不可以直接Outer.new Inner();因为不是静态的
Outer.Inner iner = outer.new Inner()
2. 对于类(普通类和抽象类)方法和属性:默认是 firendly 的。
3. 对于接口:属性,public static final
方法,public abstract
最新文章
- Java如何解决脆弱基类(基类被冻结)问题
- lvs的dr模式分析(二)
- MVVM架构~knockoutjs系列之验证信息自定义输出~再续
- sqlserver 纵横
- 公共POI导出Excel方法--java
- 基于ACE的定时器模板类
- ural 1207 Median on the Plane
- 搜索打表大找规律 (hdu2045)
- Jeditable 点击编辑文字插件
- 收集下shell使用笔记
- mutex和CRITICAL_SECTION,互斥和临界区
- 百度地图引用时 报出A Parser-blocking, cross site (i.e. different eTLD+1) script
- [ZZ] Valse 2017 | 生成对抗网络(GAN)研究年度进展评述
- Redis集群之Jedis的使用
- POJ 3074 Sudoku(算竞进阶习题)
- SVN远程管理
- (后端)如何将数据库的表导出生成Excel?
- spring mvc的例子
- Springboot返回html
- EPANET头文件解读系列7——MEMPOOL.H
热门文章
- 笔记-TCPCLIENT
- Oracle中关于DateTime的一些描述
- 高性能Web服务器Nginx的配置与部署研究(11)应用模块之Memcached模块的两大应用场景
- 快速上手Runtime(二)之给分类添加属性
- String.getBytes()[转]
- myeclipse10.X以上的破解方法
- 转载 二十篇java技术热文
- cookie用法小结 cookie.setPath 跨域共享
- [C#] IEnumerable vs IQueryable
- 4.4.6 数组也能无锁:AtomicIntegerArray