标签:
/*
匿名内部类
就是内部类的简化写法。
前提:存在一个类或者接口
这里的类可以是具体类也可以是抽象类。
格式:
new 类名或者接口名(){
重写方法;
}
本质是什么呢?
是一个继承了该类或者实现了该接口的子类匿名对象。
*/
//接口 Study
interface Study {
public abstract void read();
public abstract void write();
}
//抽象类 Play
abstract class Play {
public abstract void kongfu();
}
//Hulk 实现 接口Study
class Hulk implements Study {
public void read() {
System.out.println("i can read");
}
public void write() {
System.out.println("i can write");
}
}
//Pander继承抽象类Play
class Pander extends Play{
public void kongfu(){
System.out.println("i love kongfu");
}
}
public class AnonymousInnerClass {
public static void main(String[] args) {
// 方法一:不使用匿名内部类
//如果只使用一次,创建继承类和实现类就太浪费内存了,所以匿名内部类适用只使用一次的情况。
Study s = new Hulk();
s.read();
s.write();
Play p = new Pander();
p.kongfu();
System.out.println("------------\n");
//方法二:使用匿名内部类
new Study(){
public void read() {
System.out.println("i can read");
}
public void write() {
System.out.println("i can write");
}
}.read();
new Study(){
public void read() {
System.out.println("i can read");
}
public void write() {
System.out.println("i can write");
}
}.write();
new Play(){
public void kongfu(){
System.out.println("i love kongfu");
}
}.kongfu();
System.out.println("------------\n");
//方法三:匿名内部类的另一种简化写法
Study ss= new Study(){
public void read() {
System.out.println("i can read");
}
public void write() {
System.out.println("i can write");
}
};
ss.read();
ss.write();
Play pp =new Play(){
public void kongfu(){
System.out.println("i love kongfu");
}
};
pp.kongfu();
}
}
-------------------------------------------------------------------------------------------------------
标签:
原文地址:http://www.cnblogs.com/vmkash/p/4833891.html