Java 包的命名规则:
◼ 包名全部由小写字母(多个单词也全部小写)
◼ 如果包名包含多个层次,每个层次用 “.” 分割
◼ 包名一般由倒置的域名开头,比如 com.baidu,不要有 www
◼ 自定义包不能 java 开头( java.xxx.xx这种)
◼ package命令必须放在源文件的最前面
◼ 一个源文件最多只能有一条package命令
◼ 一条package命令对源文件中的所有类起作用
◼ 如果没有package,类将会保存在当前默认包中(不推荐)
◼ 编译后的.class文件也按照包结构存放
访问控制
方法和属性的访问控制有4个:
1 | ``` |
public:可以被任何一个包的任何一个类访问和继承
default:只能被同一个包中的其他类继承
成员访问控制
访问控制测试
在同一个包中
不在同一个包中
内部类
◼ 在类的内部可以定义另一个类
◼ 如果在Outer类的内部再定义一个Inner类,此时Inner类就称为内部类(或嵌套
类),而类Outer则称为外部类(或宿主类) ◼ 如果有多层嵌套,最外层的类称为顶层类
非静态内部类
◼ 在外部类的静态方法和外部类以外的其他类中,必须通过外部类的实例创建
内部类的实例 ★
◼ 非静态内部类可以直接访问外部类的成员,但是外部类不能直接访问非静态
内部类成员 ★
◼ 非静态内部类不能有静态方法、静态属性和静态代码块 ★
1 | import java.util.Scanner; |
静态内部类
◼ 通常一个普通类不允许声明为静态的,只有一个内部类才可以
◼ 在创建静态内部类的实例时,不需要创建外部类的实例
◼ 静态内部类中可以定义静态成员和实例成员
◼ 静态内部类可以直接访问外部类的静态成员,如果要访问外部类的实例成员,则需要通过外部类的实例去访问
1 | import java.util.Scanner; |
局部内部类
◼ 局部内部类只在当前方法中有效
◼ 局部内部类不能使用public、private 和 protected修饰
◼ 局部内部类不能使用 static 修饰符
◼ 在局部内部类中可以访问外部类的所有成员
◼ 在局部内部类中只可以访问当前方法中 final 类型的参数与变量
1 | import java.util.Scanner; |
本文作者: jiangyuhao
本文链接: http://example.com/2022/03/08/java%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6%E5%92%8C%E5%86%85%E9%83%A8%E7%B1%BB/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!