01、带包的类的编译和运行
一、包
其实就是文件夹,用于区分相同的类名
格式:package 包名 包名:全部小写,可以单极包,也可以多级包
顺序问题:packahe-->import-->class
二、带包类如何版已和运行呢?
方法一:手动建包
A:用javac命令编译生成class文件
B:手动创建包(文件夹)
C:把class文件扔到文件夹中
C:用java命令执行。
类一定要用全路径名称
带着包使用
方法二:自动建包
编译的时候,让他自动建包
java -d.Package.java
-d 后面.表示在当前目录建立包
02、不同包类之间的访问和导包问题
一、不同包下类之间的访问常见问题
问题一:找不到Deno类
解决方案:用全路径名称
问题二:程序包cn.itcast不存在
解决方案:先编译Demo类,在编译Test类
问题三:Demo类无法被访问到
解决方案:对类用public进行修饰
二、导包
如果包名太长,用的次数比较多的时候,就麻烦了。所以这个时候,才会出现导包技术
格式:
import 包名1.包名2........类名;
03、四种权限修饰符的作用
一、测试以及结论
private:只能在本类中使用
default:同一个包中
protected:不同包下的子类
public:所有的包中
二、常用的,要牢记
成员变量:private
成员方法:public
04、修饰符可以修饰哪些内容
A:所有的类都用public修饰,并且在一个java文件中只能有一个class类由public修饰,且类名与文件名相同
B:一般所有的成员变量都用private修饰,除非是子类要继承这个类
C:所有的需要对外暴露的成员方法用public修饰。(如果是抽象类或者接口,用public abstract修饰)
D:所有的构造方法用public修饰。(如果是工具类或者单例,构造方法用private修饰)
05、内部类概述
一、概念
将一个类定义在另一个类里面,对里面哪个类就成为内部类(内置类,嵌套类)
二、访问特点:
A:内部类可以直接访问外部类的成员,包括私有成员
B:而外部类要访问内部类的成员必须要建立内部类的对象
06、成员内部类的使用
一、内部类
就是把类B定义在类A里面,B就称为内部类
二、内部类的位置
A:成员变量
成员内部类
B:
局部内部类
三、成员内部类
如果在测试类中,直接使用内部类,那么请按照如下格式:
格式:外部类名.内部类名 = 外部类对象.内部类对象
07、成员内部类的修饰符(private和static)
A:private:为了安全考虑(常见用法)
B:static:为了方便(常见用法)
如果内部类是static修饰的,使用该内部类时的格式如下
外部类名.内部类名 变量名 = new 外部类名.内部类名();
08、局部内部类的使用
局部内部类
定义:方法中定义的类叫做局部内部类
09、匿名内部类的使用
一、定义
指的是没有名字的局部内部类
二、前提
必须存在一个类,抽象类,或者接口
三、格式
new 类名或者接口名 () {覆盖类或者接口中的代码,也可以自定义内容};
四、使用
interface MyInterface {
void doSomething();
}
class OuterClass {
public void performAction() {
// 创建一个实现 MyInterface 的匿名内部类实例
MyInterface myInterface = new MyInterface() {
@Override
public void doSomething() {
System.out.println("匿名内部类实现的方法被调用。");
}
};
myInterface.doSomething();
}
}
public class AnonymousInnerClassExample {
public static void main(String[] args) {
OuterClass outer = new OuterClass();
outer.performAction();
}
}
五、理解
是一个继承了类或者实现了接口的匿名的子类对象。
六、什么时候使用匿名内部类呢?
一般来说,当接口或者抽象类中的方法在三个或以下的时候,考虑使用匿名内部类,以后再你看到一个方法接受的形式参数是一个抽象类或者接口的时候,就可以考虑采用匿名内部类实现。
10、什么时候使用匿名内部类
所有父类或者父类出现接口的地方,完全可以用子类对象替代。