ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【学习笔记】内部类

2022-07-18 18:03:01  阅读:117  来源: 互联网

标签:内部 void System 笔记 class 学习 println public out


内部类

内部类就是在一个类的内部在定义一个类

1.成员内部类

package com.oop.demo10;
​
public class Outer {
    private int id;
    public void out(){
        System.out.println("这是外部类的方法");
    }
    class inner{
        public  void in(){
            System.out.println("这是内部类的方法");
        }
    }
}

其中,inner 就是内部类

通过外部类来实例化内部类,并且内部类可以直接访问外部类的私有变量

package com.oop;
​
import com.oop.demo10.Outer;
​
public class Application {
    public static void main(String[] args) {
        Outer outer = new Outer();
​
        //通过外部类来实例化内部类
        Outer.Inner inner = outer.new Inner();
        inner.getId();
    }
}
package com.oop.demo10;
​
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);
        }
    }
}

image-20220718174548614

 

2.静态内部类

package com.oop.demo10;
​
public class Outer {
    private int id = 10;
    public void out(){
        System.out.println("这是外部类的方法");
    }
    public static class Inner{
        public  void in(){
            System.out.println("这是内部类的方法");
        }
        public void getId(){
            System.out.println(id); //会报错
        }
    }
}

变成静态内部类后,id就拿不到了,原因是该静态内部类在类创建时先被实例化,还没有属性id

 

3.局部内部类

在方法中创建的类

package com.oop.demo10;
​
public class Outer {
    public void method(){
        class Inner{
            
        }
    }
}

 

4.匿名内部类

没有名字去初始化类

package com.oop.demo10;
​
public class Test {
    public static void main(String[] args) {
        new Apple().eat();
    }
}
class Apple{
    public  void  eat(){
        System.out.println("1");
    }
}

不用将实例保存在变量中

 

接口的匿名内部类

package com.oop.demo10;
​
public class Test {
    public static void main(String[] args) {
        new UserService(){
​
            @Override
            public void hello() {
                
            }
        };
    }
}
interface UserService{
    void hello();
}
 

标签:内部,void,System,笔记,class,学习,println,public,out
来源: https://www.cnblogs.com/wztblogs/p/16491474.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有