内部类:
把类定义在其他类的内部,我们称之为内部类
内部类有哪些特点:
1、内部类可以访问外部类的成员,包括私有
2、外部类要想访问内部类的成员,必须要创建内部类的对象
package com.shujia.wyh.day13;
class Outer{
private int num = 10;
class Inner{
public void show(){
System.out.println(num);
}
}
public void fun(){
//创建内部类对象
Inner inner = new Inner();
inner.show();
}
}
public class InnerClassDemo1 {
public static void main(String[] args) {
Outer outer = new Outer();
outer.fun();
}
}
按照内部类在类中定义的位置不同,可以分为如下两种格式:
成员位置(成员内部类)
局部位置(局部内部类)
package com.shujia.wyh.day13;
class Outer2{
//定义在成员的位置上(成员内部类)
class Inner2{
}
public void fun(){
//定义在局部范围内(局部内部类)
class Inner3{
}
}
}
public class InnerClassDemo2 {
}
成员内部类:外部类名.成员内部类名 对象名 = new 外部类名().new 成员内部类名();
1、定义在类的成员位置上
2、内部类可以方法外部类的成员,包括私有的
package com.shujia.wyh.day13;
class Outer3{
private int num = 10;
class Inner{
public void show(){
System.out.println(num);
}
}
}
public class InnerClassDemo3 {
public static void main(String[] args) {
//正确创建成员内部类对象的格式
//外部类名.成员内部类名 对象名 = new 外部类名().new 成员内部类名();
Outer3.Inner oi3 = new Outer3().new Inner();
oi3.show();
//相当于
// Outer3 outer3 = new Outer3();
// Outer3.Inner inner = outer3.new Inner();
// inner.show();
}
}
成员内部类常见的修饰符:
static: 内部类如果是被static修饰的时候,只能访问外部类中静态成员