Android应用开发-----内部类,匿名对象,匿名内部类

一.内部类
二.匿名对象
三.匿名内部类

内部类

定义:在类的内部再定义一个或多个类,定义的类称为内部类。

内部类的创建:
①:若内部类为非静态类,则需先用外部类实例化一个对象,再用对象new一个内部类。
如下,在Car类里面在定义一个Engine,Engine就是个内部类。

public class Car {
    private  void star(){
        System.out.println("Do something");
    }

    public class Engine{
        public Engine(){
            star();
        }

    }
}
public class MainClass {
    public static void main(String[] args){
        Car bz = new Car();
        Car.Engine engine = bz.new Engine();
    }
}

②:若内部类为静态类,它有限元非静态方法和类被加载,则无法使用非静态方法和类,无法用刚才的方法实例化,但可被它所隶属的类直接创建

public class Car {
    private  static void star(){
        System.out.println("Do something");
    }

    public static class Engine{
        public Engine(){
            star();
        }

    }
}
public class MainClass {
    public static void main(String[] args){
        Car.Engine engine = new Car.Engine();
    }
}

内部类的应用:内部类一般用来管理一些常用数据。

匿名对象

定义:创建的对象没有名字(即没有变量接收所创建的对象)
使用场景:一个对象被创建后只是用一次就可以被销毁时。

public class Worker {
    private String name;

    public Worker(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
public class MainClass {
    public static void main(String[] args) {
        //一般对象
        Worker xw = new Worker("小王");
        buildHouse(xw);
        //匿名对象
        buildHouse(new Worker("张三"));

    }
    public static void buildHouse(Worker worker){
        System.out.println(worker.getName() + "开始工作!");
    }
}

匿名内部类

1.在匿名内部类中不能定义构造函数
2.匿名内部类要么继承父类,要么实现接口

public class MainClass {
    public static void main(String[] args) {
        (new Worker("张三"){
            private int salary = 10000;
            public void showSalary(){
                System.out.println(getName() + salary);
            }
        }).showSalary(); ;
    }
}

在这里,用new Woker创建了一个匿名内部类,它继承了Woker,并新增了showSalary方法,最后可以调用showSalary方法。匿名内部类在线程中会使用到。


image.png

你可能感兴趣的:(Android应用开发-----内部类,匿名对象,匿名内部类)