1.普通内部类
package learn2;
//外部类HelloWorld
public class NeiBuClass {
// 内部类Inner,类Inner在类HelloWorld的内部
public class Inner {
//创建一个内部类方法
public void show() {
System.out.println("welcome to Chain!");
}
}
public static void main(String[] args) {
// 创建外部类对象
NeiBuClass hello = new NeiBuClass();
// 创建内部类对象
Inner i = hello.new Inner();
// 调用内部类对象的方法
i.show();
}
}
package learn2;
//外部类
public class Outer {
//外部类的私有属性name
private String name = "Mi";
//外部类的成员属性
int age = 20;
//成员内部类Inner
public class Inner {
String name = "小米";
//内部类中的方法
public void show() {
System.out.println("外部类中的name:" + Outer.this.name);
System.out.println("内部类中的name:" + name);
System.out.println("外部类中的age:" + age);
}
}
//测试成员内部类
public static void main(String[] args) {
//创建外部类的对象
Outer o = new Outer ();
//创建内部类的对象
Inner inn =o.new Inner();
//调用内部类对象的show方法
inn.show();
}
}
2.内部静态类
package learn2;
//外部类
public class Souter {
private int a = 90;//外部类的私有变量
static int b = 3;//外部类的静态变量
//内部静态类
public static class Sinner{
int b = 2;//内部静态类的变量
public void show() {
System.out.println("访问外部类中的变量b:"+Souter.b);
System.out.println("访问内部类中的变量b:"+b);
}
}
public static void main(String[]args){
Sinner i = new Sinner();//直接创建内部静态类的对象
i.show();//对内部静态类中的方法进行调用
}
}
3.方法内部的类
package learn2;
public class MethodInClass {
private String name = "小米";
// 外部类中的show方法
public void show() {
// 定义方法内部类
class MInner {
int score = 83;
public int getScore() {
return score + 10;
}
}
// 创建方法内部类的对象
MInner mi = new MInner();
int newScore = mi.getScore();// 调用内部类的方法
System.out.println("姓名:" + name + "\n加分后的成绩:" + newScore);
}
// 测试方法内部类
public static void main(String[] args) {
// 创建外部类的对象
MethodInClass mo = new MethodInClass();
// 调用外部类的方法
mo.show();
}
}