立刻有
全部
技术
PHP
MySQL
前端
Linux
JAVA
退出
编辑文章
选择分类
PHP
MySQL
前端
Linux
Java
工具
选择专栏
设计模式
java基础
Angular学习
Java面试题
描述:
java 内部类
封面图上传 :
+
点击上传图片
## 内部类 在一个类的内部的类,内部类最大优点,可以方便的访问外部类的私有方法 - 实例化内部类时,必须先实例化外部类,如果内部类时private修饰,那么不能通过这种方式实例化,必须在外部类里面处理 ```java public static void main(String [] args){ Ounter.Inner inner = new Outer().new Inner(); inner.print(); } ``` - 内部类访问外部类属性实例 ```java class Outer{ private String name = "hello"; class Inner {//内部类 public void print(){ //访问外部私有属性 System.out.println(name); } } public void printOut(){ new Inner().print(); } } public class TestInner{ public static void main(String [] args){ Outer outer = new Outer(); outer.printOut(); } } ``` - 外部类直接访问内部类私有属性 ```java class Outer{ private String name = "hello"; class Inner {//内部类 private String info = "你好!"; public void print(){ System.out.println(name); } } public void printOut(){ //通过外部类的方法访问内部类的私有属性 System.out.println(new Inner().info); } } public class TestInner{ public static void main(String [] args){ Outer outer = new Outer(); outer.printOut(); } } ``` ### static 内部类 访问 方式 ``Outer.Inner inner = new Outer.Inner();`` ```java class Outer{ private static String name = "hello"; static class Inner {//内部类 public void print(){ System.out.println(name); } } } public class TestInner{ public static void main(String [] args){ Outer.Inner inner = new Outer.Inner(); inner.print(); } } ``` ### 方法内部类 在jdk1.8之前,方法内部类需要访问方法的属性,必须把方法定义为final int num。 ```java class Outer{ private static String name = "hello"; public void print(int num){ int numa = 100; class Inner {//方法内部类 public void print(){ System.out.println(Outer.this.name); System.out.println("方法内部类方法属性:"+numa); System.out.println("方法内部类方法参数:"+num); } } new Inner().print(); } } public class TestInner{ public static void main(String [] args){ Outer outer = new Outer(); outer.print(50); } } //结果 //hello //方法内部类方法属性:100 //方法内部类方法参数:50 ```
保存文章