java学习笔记27:包与内部类
作者:互联网
1、包的作用
字节码.class分类存放
- 1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。
- 2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。
- 3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。
Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。
语法:
package com.xiaoyu.web;
public class A {}
1.其实就是文件夹
2.包名一般按功能划分,com.heima.dd
3.按模块划分com.heima.teacher,这个叫点分路径
**注意:**package是程序中的第一条,一个java文件中只能有一个。
2、带包的java命令行执行
javac -d . com\xiaoyu\web\hello.java //比如在在c盘创建一个文件夹,cd c:\test,在test中创建com\xiaoyu\web\hello.java,然后在c:\test下执行该命令,即对
java com.xiaoyu.web.hello
3、不同包下的类访问
import 包名.包名. ...包名.类名;(建议使用) //一般用具体导入,效率高
import 包名.包名. ... .*;(不建议使用)
package > import > class
package:只能有一个
import:可以有多个
class:可以有多个,以后建议是一个。(因为每一个类是一个独立的单元)
不导入包,使用包中的方法:
包名.包名. ...包名.类名 test = new 包名.包名. ...包名.类名();
4、默认导入的包
java.lang
下的包使用不需要导入
5、内部类
所谓内部类就是在一个类内部进行其他类结构的嵌套操作。
5.1 在外部类外部 创建非静态内部类
语法: 外部类.内部类 内部类对象 = new 外部类().new 内部类();
举例: Outer.Inner in = new Outer().new Inner();
5.2 在外部类外部 创建静态内部类
语法: 外部类.内部类 内部类对象 = new 外部类.内部类();
举例: Outer.Inner in = new Outer.Inner();
5.3 在外部类内部 创建内部类语法
在外部类内部创建内部类,就像普通对象一样直接创建:Inner in = new Inner();
6、内部类分类
Java中内部类主要分为成员内部类、静态内部类、方法内部类、匿名内部类
6.1 成员内部类
类比成员方法
- 成员内部类内部不允许存在任何static变量或方法 正如成员方法中不能有任何静态属性
- 成员内部类是依附外部类的,只有创建了外部类才能创建内部类。
6.2 静态内部类
static修饰的内部类
非静态内部类在编译完成之后会隐含的保存着一个引用,该引用是指向创建它的外围类,但是静态类没有。没有这个引用就意味着:
- 静态内部类的创建不需要依赖外部类可以直接创建。
- 静态内部类不可以使用任何外部类的非static类(包括属性和方法),但可以存在自己的成员变量。
6.3 方法内部类
定义在方法里的内部类
- 方法内部类不允许使用访问权限修饰符(public、private、protected)均不允许。
- 方法内部类对外部完全隐藏,除了创建这个类的方法可以访问它以外,其他地方均不能访问 (换句话说其他方法或者类都不知道有这个类的存在)方法内部类对外部完全隐藏,出了创建这个类的方法可以访问它,其他地方均不能访问。
- 方法内部类如果想要使用方法形参,该形参必须使用final声明(JDK8形参变为隐式final声明)
6.4 匿名内部类
匿名内部类就是一个没有名字的方法内部类,因此特点和方法与方法内部类完全一致,除此之外:
- 匿名内部类必须继承一个抽象类或者实现一个接口。
- 匿名内部类没有类名,因此没有构造方法。
7、内部类与外部类的关系
- 对于非静态的内部类,内部类的创建依赖外部类的实例对象,在没有外部类实例之前是无法创建内部类的。
- 内部类可以直接访问外部类的元素(包括私有域)—外部类在内部类之前创建,创建内部类时会将外部类的对象传入
- 外部类可以通过内部类的引用间接访问内部类元素 – -要想访问内部类属性,必须先创建内部类对象
- 内部类是一个相对独立的个体,与外部类没有关系。
标签:包名,部类,27,java,内部,创建,包与,new,方法 来源: https://blog.csdn.net/qq_43464558/article/details/112783320