前言
Java内部类的学习暂时告一段落,小编功底有限,暂时不能往深处讲,但小编会继续和大家一起不断积累,争取有朝一日可以和大家分享更深层次的知识。本周我们来学习Java匿名类。
一、Java匿名类
匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。
声明匿名类的语法格式如下:
new <类或接口>() {
// 类的主体
};
这种形式的new语句声明一个新的匿名类,它对一个给定的类进行扩展,或者实现一个给定的接口。使用匿名类可使代码更加简洁、紧凑,模块化程度更高。
二、匿名类的实现方式
匿名类的实现方式有两种:
1)继承一个类,重写其方法。
2)实现一个接口(可以是多个),实现其方法。
下面我们通过实战来分别来说明:
2.1 继承一个类,重写其方法
package code.tisheng11;
public class Anonymity { //构造一个匿名外部类
void show() {
System.out.println("调用(外部类)Anonymity类的show()方法");
}
class TestAnonymity {
private void show() {
Anonymity anony= new Anonymity() { //在此方法中构造一个匿名内部类
void show() { //获取匿名内部类的实例,重写其方法
System.out.println("调用(内部类)TestAnonymity类中的show()方法");
}
};
anony.show(); //调用匿名内部类的show()方法
}
}
public static void main(String[] args) {
TestAnonymity test = new Anonymity().new TestAnonymity();//创建内部类的实例test
test.show();//获取匿名内部类的show()方法
Anonymity anony = new Anonymity();//实例化外部类
anony.show();//获取外部类的show()方法
}
}
2.2 接口实现匿名类
package code.tisheng11;//定义一个接口
public interface PowerSupply {
//开通电源
void Open();
//关闭电源
void Close();
}
package code.tisheng11;//一个类用以实现接口,并在里面使用匿名内部类
public class Computer {
public static PowerSupply Control_Power() {
return new PowerSupply() {//构造一个匿名类
@Override
public void Open() {//注意:实现接口时,需重写所有的抽象方法
System.out.println("接通计算机的电源...");
}
@Override
public void Close() {
System.out.println("断开计算机的电源...");
}
};
}
}
package code.tisheng11;//接口实现匿名类
public class Testpower {
public static void main(String[] args) {
System.out.println("----------------------------");
PowerSupply computer = Computer.Control_Power();
computer.Open();
System.out.println("-----------------------------");
computer.Close();
}
}
三、匿名类的特点
匿名类的特点有以下三个:
前面在匿名类的实现方法中,小编已使用了上述特点1和2,剩下的留给大家去探索吧~
END
习题时间:
定义一个Father和Child类,并进行测试。要求如下:
1)Father类为外部类,类中定义一个私有的String类型的属性name,name的值为“Dad”。
2)Child类为Father类的内部类,其中定义一个introFather()方法,方法中调用Father类的name属性。
3)定义一个测试类Test,在Test类的main()方法中,创建Child对象,并调用introFather ()方法。
编辑:玥怡居士|审核:世外居士