本节内容
1.内部类
2.匿名内部类
一、内部类
1.尽量一个文件里面定义一个类,需要在类的内部定义一个类,这种类就称为内部类
2.定义内部类的原因:希望封装对应的功能,这些功能可能不太希望直接暴露给外部
3.内部类是外部类的成员,内部类可以直接访问外部内的数据和方法,外部类无法调用内部类的相应数据。
4.内部类可以使用private,public,protected,final修饰符修饰,外部类只能使用public来修饰
5.普通内部类—属于对象,必须用对象来调用。静态内部类—属于类,必须使用类来调用,静态内部类无法调用非静态数据。
public class Car {
private int Color;
private int Wheels;
public void start(){
Wheels=4;
Engine engine= new Engine();//内部使用内部类
}
public class Engine{
public int oil;
public Engine(){
Wheels=5;
start();
}
}
}
6.内部类的使用:如果是在内部的话,就像上述代码一样
Engine engine= new Engine();//内部使用内部类
但如果是在另外一个类调用这个内部类,就需要像以下一样
Car bz=new Car();
Car.Engine engine=bz.new Engine();//一般很少使用
7.调用静态内部类
Car.Engine engine=new Car.Engine();
二、匿名内部类
1、如果需要多次使用一个对象,那么就直接创建一个对象(显示创建,显示对象)
Worker xw=new Worker("小王");
BuildHouse(xw);
xw.setName("小李");
但如果只是使用一次这个对象,那不如使用匿名对象(没有名字的对象),如下:
BuildHouse(new Worker("张三"));
2.匿名类:没有名字的类,不显示创建这个类
BuildHouse(new MiniWorker("小工人"));
以上只是创建了一个匿名对象,以下才是创建一个匿名类
BuildHouse(new Worker("MiniWorker"){
//匿名类的具体实现
public int salary;
public void ShowMoney(){
System.out.println(getName()+"工钱为100"+salary);
}
});
注:匿名内部类不能声明构造方法
3.使用匿名内部类必须满足:①这个类继承某个父类 ②这个类实现某个接口
网友评论