java内部类

内部类

  • 内部类就是在一个类的内部再定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对B类来说就是外部类了
    1. 成员内部类
    2. 静态内部类
    3. 局部内部类
    4. 匿名内部类
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);
        }
    }    
    /*
    	public static class Inner{      //静态内部类,不能获得外部类的私有属性,static加载时间最早
        	public void in(){
            	System.out.println("这是内部类的方法");
        	}
        	public void getID(){
            	System.out.println(id);
        	}
    	}
     */        
}
==================================================
import com.oop.demo10.Outer;

public class Application {

    public static void main(String[] args) {
        // new

        Outer outer = new Outer();

        //通过这个外部类来实例化内部类~
        Outer.Inner inner = outer.new Inner();
        inner.getID();
    }
}
==================================================
public class Outer {
}
//一个Java文件中可以有多个class,但是同一级只能有一个public class
public class A{     //编译错误
}
class B{        //编译通过
}
==================================================
public class Test {
    public static void main(String[] args) {
        //Apple apple = new Apple();  //正常实例化对象
        //没有名字初始化类,不用将实例保存到变量中~
        //匿名内部类
        new Apple().eat();      //匿名

        new UserService(){      //匿名

            @Override       //重写接口的方法,实现接口方法
            public void hello() {

            }
        };

        UserService userService = new UserService(){        //正常操作

            @Override
            public void hello() {

            }
        };
    }
}

class Apple {
    public void eat() {
        System.out.println("1");
    }
}

interface UserService{
    void hello();
}

posted @ 2021-11-17 22:17  wydilearn  阅读(25)  评论(0编辑  收藏  举报