内部类

九、内部类 奇葩代码

内部类就是在一个类的内部定义一个类,比如A类中定义一个B类,那么B类相对于A类来说就被称为内部类,或者说B类就是A累的内部类,二A类相对B类就是外部类。

  1. 成员内部类
  2. 静态内部类
  3. 局部内部类
  4. 匿名内部类
  5. lambada的补充

成员内部类

package oop.Demo10;

import javax.sound.midi.Soundbank;

public class Outer {
    private int id = 10;

    public void out(){//外部类的方法
        System.out.println("这是外部类的方法 ");
    }

    //再定义一个类 - 内部类
    public class Inner {//如果这个内部类加上static,就无法拿到private外部类的id,除非把外部类也改成static
        public void in() { //内部类的方法
            System.out.println("这是内部类的方法");
        }

        //获得外部类Outer的私有属性id
        public void getID(){
            System.out.println(id);
        }
    }

}
package oop;

import oop.Demo10.Outer;

public class Application {
    public static void main(String[] args) {
        //对外部类 - new
        Outer outer = new Outer();

        //对内部类 - 通过这个外部类来实例化内部类 - 先访问Outer再Inner,所以是Outer.Inner
        Outer.Inner inner = outer.new Inner(); //成员内部类
        inner.in(); //成功输出:这是内部类的方法

        inner.getID(); //成功输出:10
    }
}

静态内部类: +static

如果一个内部类加上修饰符static,就无法拿到 private外部类 的属性,除非把外部类也改成static

一个java类中可以有多个class类,但只能有一个public class类

package oop.Demo10;

import javax.sound.midi.Soundbank;

public class Outer {

}
//一个java类中可以有多个class类,但只能有一个public class类
class A{

}

局部内部类:

package oop.Demo10;

import javax.sound.midi.Soundbank;

public class Outer {

    //局部内部类
    public void method(){
        class Inner{ //class类写哪里都可以!

            public void in(){
                
            }
        }
    }
}

重写接口:

package oop.Demo10;

public class Test {
    public static void main(String[] args) {
        /*Apple apple = new Apple(); //这是实例化,有名字
         */
        //没有名字初始化类,不用将实例保存到变量中
        new Apple().eat();
        
      UserService userService = new UserService(){
            @Override
            public void hello() {

            }
        };
    }
}
class Apple{
    public void eat(){
        System.out.println("`");
    }
}
interface UserService{
    void hello();
}

面向对象OOP主要在思想!

posted @ 2021-02-18 17:50  NTE701  阅读(75)  评论(0)    收藏  举报
1