【学习笔记】枚举和内部类

一、枚举:是一种引用数据类型,主要对数据进行限制。
      语法:enum

如:

enum WEEKDAY{
    MON,TUE,THU
}
public class Test {
    public static void main(String[] args) {
        int num=10;
        WEEKDAY weekday=WEEKDAY.MON;
        System.out.println(weekday);

}

//输出结果:MON


二、内部类:在一个类的里面又定义一个类
1、内部类的分类:
(1)静态内部类:
在一个类中定义一个静态类,在静态内部类中可以定义静态内容和实例内容。
(1)访问静态内容时: Test.A.静态方法();

如:public class Test {
    static class A{
        static int num=7;
        static int getNum() {
            return num;
        }
    }
    public static void main(String[] args) {
        System.out.println(Test.A.getNum());             //输出结果:7   
    }    
}
(2)访问实例内容时:  Test.A a=new Test.A();         a.实例方法();

如:

public class Test {
    static class A{
        void print() {
            System.out.println("静态内部类的实例方法");
        }
    }    
    public static void main(String[] args) {
        Test.A a=new Test.A();
        a.print();                //输出结果:静态内部类的实例方法
    }    
}
2、成员内部类:
在一个类中定义一个非静态类。成员内部类可以直接使用外部类中定义所有内容,包括私有内容
(1)创建成员内部类的对象:
          外部类名.内部类名 b=new 外部类名().new 内部类名();

如:

public class Test {
    private String name="tom";
    class B{
        int age=20;
        void display() {
            System.out.println("名字:"+name);
        }
    }    
    public static void main(String[] args) {
        Test t=new Test();
        Test.B b=t.new B();
        b.display();
        System.out.println("年龄:"+b.age);
    }    
}

//输出结果:

名字:tom
年龄:20


3、局部内部类:

4、匿名内部类:没有名字,实现需要有个接口

例1:

//接口USB.java文件

public interface USB {
    void work();    
}

//Test.java文件

    public static void main(String[] args) {
        USB usb1=new USB() {            
            @Override
            public void work() {
                System.out.println("键盘输入");                
            }
        };
        usb1.work();
        USB usb2=()->{System.out.println("连接打印机");};
        usb2.work();            
    }

//输出结果:

键盘输入
连接打印机

例2:

//接口Calc.java文件

public interface Calc {
    int sum(int a,int b);
}

//Test.java文件

public static void main(String[] args) {
        Calc c1=new Calc() {            
            @Override
            public int sum(int a, int b) {                
                return a+b;
            }
        };    
        System.out.println(c1.sum(3, 7));
        Calc c2=(a,b)-> a+b;
        System.out.println(c2.sum(5, 1));
        Calc c3=(a,b)-> {return a+b;};
        System.out.println(c3.sum(2, 6));
    }    

//输出结果:

10
6
8
 


 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值