java内部类的简介说明
转自:
http://www.java265.com/JavaCourse/202206/3755.html
下文笔者讲述java中内部类的简介说明
内部类简介
我们将定义在类中的类称之为“内部类”
例:
public class User{ //内部类 public class run{ } }
内部类的使用场景及功能
当一个对象内部 还拥有一个完整的结构时,内部结构同时为外部结构服务 那么内部完整结构,可使用内部类设计 内部类注意事项: 1.内部类通常可以方便访问外部类的成员,包括私有的成员 2.内部类提供了更好的封装性 内部类本身就可以用private protectecd等修饰 封装性可以做更多控制。
内部类的分类
静态内部类 成员内部类(非静态内部类) 局部内部类 匿名内部类
静态内部类简介
有static修饰 属于外部类本身 如: public class outer{ //静态内部类 public class static inner{ } } 静态内部类创建对象的格式 外部类名.内部类名 对象名 = new 外部类名.内部类名();
例:
public class user { public static String name = "刘畅"; public static class score{ private String name ; private int price; public score() { } public score(String name, int price) { this.name = name; this.price = price; } public void buy(){ System.out.println(user.name+"购买了"+this.name); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } } } //main方法 user.score m = new user.score("猫猫",300); m.buy();
静态内部类可以访问外部类的静态成员 但是不能访问外部类的实例成员 因为实例成员是由对象创建的 内部类无法找到 除非在内部类中new一个对象 进行间接的访问
成员内部类简介
无static修饰 属于外部类的对象 //格式 public class outer{ public class inner{ } } 成员内部类创建对象的语法: 外部类名.内部类名 对象名 = new 外部构造器.new内部构造器(); outer.inner in = new outer().new inner();
例:
public class user { public static String name1 = "刘畅"; private String name2 ; public class score{ private String name ; private int price; public void buy(){ System.out.println(user.name1+"购买了"+this.name); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } } } //main方法 user.score m = new user().new score(); m.setName("奥特曼"); m.buy();
局部内部类简介
局部内部类放在方法、代码块、构造器等执行体中 局部内部类的类文件名: 外部类$N内部类.class 例:在方法test中定义类 class 类名{ }
匿名内部类
将定义在方法中,代码块中等 并且没有类名,我们将这种类称之为“匿名内部类” 匿名内部类的用途: 方便创建子类对象,简化代码编写 new 类名|抽象类名|或者接口名(){ 重写方法; };