首页 > 其他分享 >内部类

内部类

时间:2024-03-07 15:01:24浏览次数:11  
标签:InnerClass String void public println display 内部

一般情况下,类和类之间时相互独立的,内部类的意思是打破这种独立,让一个类成为另外一个类的内部信息,和成员变量、成员方法同等级别。

成员内部类

就是将内部类当成外部类的成员变量对待。

/**
 * @author Pickle
 * @version V1.0
 * @date 2024/3/7 11:58
 */
public class OuterClass {
    //成员变量
    private String outerName = "outer Class";
    //成员方法
    public void display(){
        System.out.println("OuterClass display");
        System.out.println(outerName);
    }
    //内部类
    public class InnerClass{
        private String innerName;
        public void display(){
            System.out.println("InnerClass display");
            System.out.println(innerName);
        }

        public InnerClass(){
            innerName = "inner Class";
        }
    }

    public static void main(String[] args) {
        final OuterClass outerclass = new OuterClass();
        outerclass.display();
        //final InnerClass innerClass = new InnerClass(); 这种方法会报错,因为InnerClass依赖于外部类
        OuterClass.InnerClass innerClass = outerclass.new InnerClass();
        innerClass.display();
    }

}

局部内部类

/**
 * @author Pickle
 * @version V1.0
 * @date 2024/3/7 11:58
 */
public class OuterClass {
    //成员变量
    private String outerName = "outer Class";
    //成员方法
    public void display(){
        //局部内部类
        class InnerClass{
            private String innerName = "inner Class";
            public void display(){
                System.out.println("InnerClass display");
                System.out.println(innerName);
            }
        }
        InnerClass innerClass = new InnerClass();
        innerClass.display();
    }

    public static void main(String[] args) {
        final OuterClass outerClass = new OuterClass();
        outerClass.display();
    }

}

静态内部类的构造不需要依赖于外部类



/**
 * @author Pickle
 * @version V1.0
 * @date 2024/3/7 11:58
 */
public class OuterClass {
    //成员变量
    private String outerName = "outer Class";
    //成员方法
    public void display(){
        System.out.println(outerName);
    }

    static class InnerClass{
        private String innerName = "inner class";
        public void display(){
            System.out.println(innerName);
        }
    }

    public static void main(String[] args) {
        final InnerClass innerClass = new InnerClass();
        innerClass.display();
    }

}

匿名内部类

对于一个接口不用单独实现,在用到这个接口的地方直接自定义实现方法,灵活使用。

 /**
 * @author Pickle
 * @version V1.0
 * @date 2024/3/7 14:43
 */
interface Animal {
    void eat();
}

public class Demo {
    public void function(Animal a){
        a.eat();
    }
    public static void main(String[] args) {
        final Demo demo = new Demo();
        demo.function(new Animal() {
            @Override
            public void eat() {
                System.out.println("eat");
            }
        });
    }
}

使用Lambda表达式简化匿名内部类

/**
 * @author Pickle
 * @version V1.0
 * @date 2024/3/7 14:43
 */
interface Animal {
    void eat();
}

public class Demo {
    public void function(Animal a){
        a.eat();
    }
    public static void main(String[] args) {
        final Demo demo = new Demo();
        demo.function(()->{
            System.out.println("eat");
        });
    }
}

标签:InnerClass,String,void,public,println,display,内部
From: https://www.cnblogs.com/poteitoutou/p/18058899

相关文章

  • 匿名内部类
    匿名内部类匿名内部类就是当一个抽象类或接口有一个或者几个抽象方法,不想去继承或者实现它重新定义,就可以用匿名内部类的方法new一个抽象类或者接口直接重写抽象方法。或者匿名内部类访问局部变量publicstaticvoidmain(String[]args){Stringname="哈......
  • 【转】[Java]接口的 VO 使用内部类的写法
    参考:https://www.cnblogs.com/hyperionG/p/15602642.html以下代码段是向阿里的通义灵码提问得到的:importlombok.Data;@DatapublicclassOuterVO{//外部类的属性privateStringouterAttribute;//定义内部类并添加@Data注解@Datapublicst......
  • 判断点在封闭多边形内部
    判断点在一个面域的内部前言作者在学习工作中,经常需要和几何相关内容打交道,因此分享自己在编程过程中遇到的一些问题和解决方法,也十分欢迎各位私信与我交流,另外如有不懂得地方也可以找我,在下会积极回复。问题分析通常来说,人眼能一眼就看出一个点是否处于面内,但是如何让计算机......
  • Java匿名内部类 labmda表达式 传统风格 对比
    传统风格classMyInvocationHandlerimplementsInvocationHandler{   @Override   publicObjectinvoke(Objectproxy,Methodmethod,Object[]handlerArgs)throwsThrowable{       if("eat".equals(method.getName())){           System......
  • CSS内联样式,内部样式表,外部样式表
    1.内联样式 直接在标签添加样式<h1style="text-align:center;">内容</h1>2.内部样式表在head标签里面定义<head><styletype="text/css">h1{text-align:center;}</style></head>3.外部样......
  • 成员内部类
    我们可以直接在类的内部定义成员内部类:publicclassTest{publicclassInner{//内部类也是类,所以说里面也可以有成员变量、方法等,甚至还可以继续套娃一个成员内部类publicvoidtest(){System.out.println("我是成员内部类!");}}......
  • Java面向对象之内部类的几类使用场景
    介绍Java内部类是一种特殊的类,它定义在另一个类的内部。内部类提供了许多有用的特性,包括访问外部类的私有成员、隐藏实现细节以及实现回调接口等。以下是Java内部类的一些常用场景及其举例说明:回调接口当某个类需要一个对象来执行其方法时,通常可以使用回调接口。这时,内部类可以......
  • 类变量和类方法、代码块、单例设计模式、final关键字、抽象类、接口、内部类
    类变量和类方法类变量-提出问题说:有一群小孩在玩堆雪人,不时有新的小孩加入,请问如何知道现在共有多少人在玩?,编写程序解决。传统的方法来解决思路在main方法中定义一个变量count当一个小孩加入游戏后count++,最后个count就记录有多少小孩玩游戏小孩是一个类,有名字属......
  • 通过汇编语言了解程序内部
    本地代码不易理解,因而产生了一种想法,在各本地代码中附带表示其功能的英语单词缩写例如,加法运算的本地代码中加add,这些缩写称为助记符,使用助记符的编程语言叫做汇编语言。但是即使是汇编语言,最终也需要转换成本地代码才能运行负责转换工作的程序称为汇编器;转换这一处理称为汇编。......
  • vue3+elment-plus项目,el-diglog的按钮,内部是el-form的子组件,那么保存时,如何触发子组件
    问题:el-diglog的按钮,如何触发内部的form表单提交el-dialog是父组件,cengji是子组件代码如下:<el-dialogv-model="dialogVisible"title="层级结构管理"width="1000"><cengji:tableId="tableId"/><template#footer>......