欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JAVA基础-内部类

程序员文章站 2022-03-03 12:21:12
/** * 定义:将一个类A定义在类B里面,A就称之为内部类,B为外部类 * 使用场景:内部事物脱离外部事物无法独立使用得时候用 * 例如:人里面有一颗心脏,电脑里面有一个处理器 * 分类:①静态内部类(static修饰的内部类) * ②实例内部类(没有static修饰的内部类) * ③局部内部类(类定义在方法里面) * ④匿名内部类(也是定义在方法里面,或者是可执行代码中) *///静态内部类案例:public class Demo01 { //...
/**
 * 定义:将一个类A定义在类B里面,A就称之为内部类,B为外部类
 * 使用场景:内部事物脱离外部事物无法独立使用得时候用
 * 例如:人里面有一颗心脏,电脑里面有一个处理器
 * 分类:①静态内部类(static修饰的内部类)
 *      ②实例内部类(没有static修饰的内部类)
 *      ③局部内部类(类定义在方法里面)
 *      ④匿名内部类(也是定义在方法里面,或者是可执行代码中)
 */

//静态内部类案例:
public class Demo01 {
    //外部类成员变量
    private static String student = "小明";

    //这是内部类
    private static class Inner{
        //内部类的属性
        private String name;
        //有参构造器
        public Inner(String name) {
            this.name = name;
        }
        //定义一个方法去访问外部类的成员变量
        public void getStudent(){
            System.out.println(this.name);
            System.out.println(student);
        }
    }

    public static void main(String[] args) {
        //因为我都在一个类里..其实Demo01可以省略了..
        Demo01.inner boy = new Demo01.inner("小花");
        //这里调用方法
        boy.getStudent();
        //最后会输出:小花,小明,说明内部类可以访问到外部类的变量
    }

}
//实例内部类案例:
public class Demo02 {
    //实例内部类没有static修饰
    public class Inner{
        private String name;

        public Inner(String name) {
            this.name = name;
        }

        public void showName(){
            System.out.println(this.name);
        }
    }

    public static void main(String[] args) {
        Demo02.Inner student = new Demo02().new Inner("小花");
        //这里就输出小花
        student.showName();
    }

}
//局部内部类案例:
public class Demo03 {
    //这是一个方法
    public void showName(){
        //方法里面的类
        class Student{
            private String name = "小花";

            public void getName(){
                System.out.println(name);
            }
        }
        Student student = new Student();
        student.getName();
    }

    public static void main(String[] args) {
        Demo03 demo03 = new Demo03();
        demo03.showName();
    }
}
//匿名内部类案例:
public interface Demo04 {
    public abstract void run();
}

class Demo05 {
    public static void main(String[] args) {
        new Demo04() {
            public void run() {
                System.out.println("跑起来");
            }
        }.run();
    }
}

本文地址:https://blog.csdn.net/MJH_JASON/article/details/107365407

相关标签: java基础 java