java内部类

简介: 内部类 内部类就是在一个类的内部再定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了 成员内部类 静态内部类 局部内部类 匿名内部类 public class Outer { private int id=10; public void out()

内部类


  • 内部类就是在一个类的内部再定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了


  1. 成员内部类
  2. 静态内部类
  3. 局部内部类
  4. 匿名内部类


public class Outer {
    private int id=10;
    public void out(){
        System.out.println("这是外部类的方法");
    }
    public class Inner{     //内部类
        public void in(){
            System.out.println("这是内部类的方法");
        }
        //获得外部类的私有属性,私有方法等~        
        public void getID(){
            System.out.println(id);
        }
    }    
    /*
      public static class Inner{      //静态内部类,不能获得外部类的私有属性,static加载时间最早
          public void in(){
              System.out.println("这是内部类的方法");
          }
          public void getID(){
              System.out.println(id);
          }
      }
     */        
}
==================================================
import com.oop.demo10.Outer;
public class Application {
    public static void main(String[] args) {
        // new
        Outer outer = new Outer();
        //通过这个外部类来实例化内部类~
        Outer.Inner inner = outer.new Inner();
        inner.getID();
    }
}
==================================================
public class Outer {
}
//一个Java文件中可以有多个class,但是同一级只能有一个public class
public class A{     //编译错误
}
class B{        //编译通过
}
==================================================
public class Test {
    public static void main(String[] args) {
        //Apple apple = new Apple();  //正常实例化对象
        //没有名字初始化类,不用将实例保存到变量中~
        //匿名内部类
        new Apple().eat();      //匿名
        new UserService(){      //匿名
            @Override       //重写接口的方法,实现接口方法
            public void hello() {
            }
        };
        UserService userService = new UserService(){        //正常操作
            @Override
            public void hello() {
            }
        };
    }
}
class Apple {
    public void eat() {
        System.out.println("1");
    }
}
interface UserService{
    void hello();
}


相关文章
|
2月前
|
Java 编译器
【Java】内部类
【Java】内部类
23 0
|
4月前
|
Java
【Java基础面试二】、个Java文件里可以有多个类吗(不含内部类)?
这篇文章讨论了Java文件中类的定义规则,指出一个Java文件可以包含多个类(不包含内部类),但其中最多只能有一个public类,且如果有public类,它的名称必须与文件名一致。
|
4月前
|
算法 Java
12 Java常用类(一)(内部类+object类+包装类)
12 Java常用类(一)(内部类+object类+包装类)
44 5
|
5月前
|
Java
Java进阶之内部类
【7月更文挑战第13天】Java内部类增进代码组织与封装,允许直接访问外部类成员,包括私有成员。主要有四种类型:成员、静态、局部和匿名内部类。匿名内部类常用于一次性实现接口或扩展类。内部类可隐藏实现细节,减少命名冲突,并在特定上下文中定义辅助类。示例展示了静态和非静态内部类如何在Shape类中封装Circle和Rectangle。使用内部类能提升代码可读性,但可能增加复杂性。
50 6
|
4月前
|
Java
【Java】内部类、枚举、泛型
【Java】内部类、枚举、泛型
|
6月前
|
Java
一篇文章讲明白Java中内部类详解—匿名内部类
一篇文章讲明白Java中内部类详解—匿名内部类
106 2
|
6月前
|
设计模式 Java 编译器
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
Java中的内部类(如果想知道Java中有关内部类的知识点,那么只看这一篇就足够了!)
|
6月前
|
Java 编译器
24. 【Java教程】内部类
24. 【Java教程】内部类
35 2
|
7月前
|
Java 程序员
Java的内部类与匿名类的技术性文章
Java的内部类与匿名类的技术性文章
55 1
|
7月前
|
Java
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
98 3