本帖最后由 风中的消逝 于 2018-4-23 15:22 编辑
【石家庄校区】就业班_JavaSE_day04_package_权限修饰_内部类
一 包
cn.itcast 这是二个包 包就是文件夹
同一个包下的类不能重名,与window系统下同一个目录下文件不能重名类似。
window下不区分大小写。student.java 和 Student.java都会导致重名。
包的特点:
放在代码第一行;
同一个包下的类 直接访问
java.lang包默认已经帮我们导入了。所以可以直接使用。
不同包之间类的访问方法:
1.使用的类的全名(包名.类名)
2.导包 import java.util.* 表示导入java.util包下所有的类,但不包括java.util.子包下的类。
二 权限修饰符
以后所有的类都定义为public 并且一个java文件中只有一个class
以后所有成员变量都定义为private
以后所有成员方法都定义为public
以后所有构造方法都定义为public 如果不想创建对象,则定义为private
修饰符总结: 4中权限修饰符 + static + final + abstract
三 内部类 (内部类能访问外部类成员,外部类成员不能访问内部类成员。)
成员内部类
定义在方法外,类体中。成员内部类又分为非静态的和静态的。
1 非静态内部类申明:
Outer.Inner in = new Outer().new Inner();
前面省略了包名,其实前面定义的是Inner的完整类名。
Outer.this 表示对外部类Outer的引用。
非静态内部类可以访问外部类的所有成员,包括静态和非静态。
2 静态内部类申明:
Outer.Inner in = new Outer.Inner();
静态内部类的成员如果是静态的,可以直接通过Outer.Inner.成员 来访问。
静态内部类中只能访问外部类中的静态成员。
成员内部类可以用那些修饰符:
4(权限修饰符)+3(static/abstract/final)7种修饰符都可以。
局部内部类
1.定义在方法中
2.可以直接访问外部类成员,也可以访问所在方法体中的局部变量,但局部变量必须是final修饰的。
匿名内部类
1.定义在方法中或者方法的形参
2. 格式如下 相当于创建了一个类的子类或者接口的实现类对象。
new Inner() {
@Override
public void method() {
System.out.println("匿名内部类中的方法");
}
}.method();;
Inner in = new Inner(){ // 多态
@Override
public void method() {
System.out.println("匿名内部类中的方法");
}
};
注意事项
1.为什么内部类能访问外部类的成员,因为内部类持有外部类的引用。外部类名.this
2.内部类可以被static修饰,但是只能访问外部类staitc的成员
3.如果内部类被staitc修饰,内部类成员也被static修饰,可以不创建外部类对象,直接调用。
Inner.Outer.show();
4.内部类可以直接访问外部类中的成员,包括私有成员,而外部类要访问内部类中的成员必须要先创建
内部类对象。
|