ToB企服应用市场:ToB评测及商务社交产业平台

标题: Java内部类 [打印本页]

作者: 老婆出轨    时间: 2024-7-24 23:24
标题: Java内部类
一、内部类

内部类的概念:在一个类的内部在定义一个完整的类。如下代码:
  1. class Outer{
  2.     class Inner{
  3.         
  4.     }
  5. }
复制代码
特点:

  1. public class Body {
  2.     private String name = "qqqqqq";
  3.     class Header{
  4.         public void show(){
  5.             System.out.println(name);
  6.         }
  7.     }
  8. }
复制代码
分类:成员内部类、静态内部类、局部内部类、匿名内部类。
二、成员内部类

三、静态内部类

​        只有内部的类才可以用static修饰,普通的类(外部类)不能用static修饰。
  1. public class Outter {
  2.     private String name = "XXX";
  3.     private int age = 10;
  4.     static class Inner{
  5.         private String add = "成都";
  6.         private String phone = "12345678910";
  7.         private static int count = 100;
  8.         public void show(){
  9. //            调用外部类的属性
  10. //            1、先创建外部类的对象
  11.             Outter outter = new Outter();
  12. //            2、调用外部类对象的属性
  13.             System.out.println(outter.name);
  14.             System.out.println(outter.age);
  15. //            调用静态内部类的属性和方法
  16.             System.out.println(add);
  17.             System.out.println(phone);
  18. //            调用静态内部类的静态属性
  19.             System.out.println(Inner.count);
  20.         }
  21.     }
  22.     public static void main(String[] args) {
  23.         Inner inner = new Inner();
  24.     }
  25. }
复制代码
静态内部类Inner和Outter是同一级别的,由于Inner是静态的,在创建Outter时,static的类也同时被创建了。
四、局部内部类

定义在外部类的方法中,作用范围和创建对象范围仅限于当前方法中。局部内部类访问外部类当前方法中的局部变量时,因无法保障变量的生命周期与自身雷同,变量必须修饰为final。
  1. public class Outer {
  2.     private String name = "xxx";
  3.     private int age = 18;
  4.     public void show(){
  5. //        定义的局部变量
  6.         String address = "成都";
  7. //        局部内部类不能加任何修饰符
  8.         class Inner{
  9.             String phone = "12345678901";
  10.             String email = "qqqqqq@qq.com";
  11.             public void show2() {
  12. //                访问外部类的属性
  13.                 System.out.println(Outer.this.name);
  14.                 System.out.println(Outer.this.age);
  15. //                访问内部类的属性
  16.                 System.out.println(this.phone);
  17.                 System.out.println(this.email);
  18. //                访问局部变量,默认为常量final
  19.                 System.out.println(address);
  20.             }
  21.         }
  22. //        创建局部内部类对象
  23.         Inner inner = new Inner();
  24.         inner.show2();
  25.     }
  26.     public static void main(String[] args) {
  27.         Outer outer = new Outer();
  28.         outer.show();
  29.     }
  30. }
复制代码
五、匿名内部类

本质就是没有类名的局部内部类(一切特征都与局部内部类雷同)
必须继承一个父类或者实现一个接口
定义类、实现类、下黄建对象的语法合并,只能创建一个该类的对象。
Usb.java
  1. public interface Usb {
  2.     void service();
  3. }
复制代码
Mouse.java
  1. public class Mouse implements Usb{
  2.     @Override
  3.     public void service() {
  4.         System.out.println("鼠标已经链接");
  5.     }
  6. }
复制代码
TestUsb.java
  1. public class TestUsb {
  2.     public static void main(String[] args) {
  3. //        创建接口类型的变量
  4. //        Usb usb = new Mouse();
  5. //        usb.service();
  6. //        局部内部类
  7. //        class Fan implements Usb{
  8. //            @Override
  9. //            public void service() {
  10. //                System.out.println("连接电脑成功,电扇开始工作...");
  11. //            }
  12. //        }
  13. //
  14. //        Usb usb = new Fan();
  15. //        usb.service();
  16. //        匿名内部类
  17.         Usb usb = new Usb() {
  18.             @Override
  19.             public void service() {
  20.                 System.out.println("连接电脑成功,电扇开始工作...");
  21.             }
  22.         };
  23.         usb.service();
  24.     }
  25. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4