概念:在一个类的内部再定义一个完整的类
特点:
class Body{ private String name="han"; class Head{ public void show(){ System.out.println(name); } } }
public class InnerClass { public static void main(String[] args) { // Body body = new Body(); // Body.Head head = body.new Head(); // head.show(); //通过外部类调用内部类 new Body().new Head().show(); } } class Body{ private String name="han"; class Head{ private int age=20; public void show(){ System.out.println(name); System.out.println(age); } } }
public class InnerClass { public static void main(String[] args) { // Body body = new Body(); // Body.Head head = body.new Head(); // head.show(); //通过外部类调用内部类 new Body().new Head().show(); } } class Body{ private String name="han"; class Head{ private int age=20; private String name="song"; public void show(){ //若想访问外部类的重名属性,需要用类名.this.属性 System.out.println(Body.this.name); System.out.println(name); System.out.println(age); } } } /* * 输出: * han * song * 20 * */
private static final String address="山东";
public class StaticClass { public static void main(String[] args) { Body2.Head head=new Body2.Head(); head.show(); } } class Body2{ private String name="han"; //静态内部类 static class Head{ private int age=20; private String name="song"; //可定义静态成员 private static String address="山东"; public void show(){ //调用外部类成员 Body2 body=new Body2(); System.out.println(body.name); //调用内部成员 System.out.println(name); System.out.println(age); //调用内部类静态成员 System.out.println(Head.address); } } }
public class JvBuClass { public static void main(String[] args) { Body3 body=new Body3(); body.Test(); } } //外部类 class Body3{ private String name="han"; private int age=20; public void Test(){ String test="test";//jdk1.8final可省略 //局部内部类就是和上面的test同一级别的成员 class Head{ private String name="song"; private int age=21; //局部内部类中不能有静态成员,但可以有静态常量 private final static String adress="山东"; public void show(){ //调用外部类成员 System.out.println(Body3.this.name); System.out.println(Body3.this.age); //调用局部内部类成员 System.out.println(this.name); System.out.println(this.age); //访问局部变量,jdk1.7要求必须是常量final来修饰,jdk1.8自动添加final System.out.println(test); } } //实例化局部内部类,并调用show方法 Head head=new Head(); head.show(); } }
//usb接口 public interface Usb { void Service(); } //实现usb接口的鼠标类 public class Mouse implements Usb{ @Override public void Service() { System.out.println("连接成功,鼠标开始运行"); } } //程序入口 public class Test { public static void main(String[] args) { //调用实现usb接口的鼠标实例 Usb usb=new Mouse(); usb.Service(); //创建一个局部内部类,来创建一个风扇实例 class Fan implements Usb{ @Override public void Service() { System.out.println("风扇连接成功..."); } } Usb usb1=new Fan(); usb1.Service(); //创建一个匿名内部类,来创建一个键盘实例 Usb usb2=new Usb() { @Override public void Service() { System.out.println("键盘开始工作...."); } }; usb2.Service(); } }