内部类
什么是内部类?
一个类写在另外一个类的里面,里面的类就是内部类
内部类的特点?
内部类可以直接访问外部类的成员,包括私有的
但是,外部类不能直接使用内部类的成员,但是可以间接使用
内部类的分类?
成员内部类:
什么是成员内部类?
定义在类中,方法外的内部类
class Outer {
class Inner {
}
}
成员内部类的使用?
public/protected/默认:
class Outer {
class Inner {
int i = 1;
public void print() {
System.out.println("约吗");
}
}
}
class Demo {
public static void main(String[] args) {
Outer.Inner oi = new Outer().new Inner();
System.out.println(oi.i);
oi.print();
}
}
static:
class Outer {
static class Inner {
int i = 1;
public void print() {
System.out.println("约吗");
}
}
}
class Demo {
public static void main(String[] args) {
/*
Outer.Inner oi = new Outer.Inner();
System.out.println(oi.i);
oi.print();
*/
/*
需要导包:import com.inner.Outer.Inner;
*/
Inner inner = new Inner();
System.out.println(inner.i);
inner.print();
}
}
private:
class Outer {
private class Inner {
int i = 1;
public void print() {
System.out.println("约吗");
}
}
public void show() {
Inner inner = new Inner();
System.out.println(inner.i);
inner.print();
}
}
class Demo {
public static void main(String[] args) {
Outer outer = new Outer();
outer.show();
}
}
局部内部类:
什么是局部内部类?
定义在方法中的内部类
class Outer {
public void print() {
class Inner {
}
}
}
局部内部类怎么使用?
class Outer {
public void print() {
class Inner {
int i = 2;
public void show() {
System.out.println("滚犊子");
}
}
Inner inner = new Inner();
System.out.println(inner.i);
inner.show();
}
}
class Demo {
public static void main(String[] args) {
Outer outer = new Outer();
outer.print();
}
}