全部
技术
PHP
MySQL
前端
Linux
JAVA
工具
纪念日计算器
邮记星
个人记账
笔记侠
历史上的今天
生日密码
生日书
生日密码
生日花语
博古通今
三十六计
鬼谷子
笑林广记
本草纲目
山海经
唐诗宋词
宋词300首
唐诗300首
退出
登录
注册
编辑文章
选择分类
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 ```
保存文章