这学期选修了安卓手机平台开发课程,开发使用的是java语言,所以在这个过程中我又巩固了很多java的知识点,我记得在前年下半年的时候我学了java这门课程,但是后来有很长一段时间没有写java程序了,导致有很多语法什么之类的慢慢淡忘,现在借此机会,又慢慢的一点点的捡拾起来了。今天我的这篇微型技术博客探讨的就是java里面的匿名内部类。
1.匿名内部类其实就是内部类的简写格式。
2..定义匿名内部类的前提:内部类必须是继承一个抽象类或者实现接口。只要一个类是抽象的或是一个接口,那么其子类中的方 法都可以使用匿名内部类来实现
3.匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4.其实匿名内部类就是一个匿名子类对象
5.使用匿名内部类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类或者实现一个接口。同时它也是没有class关键字,这是因为匿名内部类是直接使用new来生成一个对象的引用。当然这个引用是隐式的。
6.注意点:
匿名内部类中是不能定义构造函数的。
匿名内部类中不能存在任何的静态成员变量和静态方法。
匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。
匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法
1匿名内部类的实现
abstractclass Time{
publicabstractvoid starttime();
}
publicclass Date{
publicstaticvoid main(String[] args) {
Time t =new Time(){
publicvoid starttime() {
System.out.println("the time used is:");
}
};
t.starttime();
}
}
在接口上使用匿名内部类
interface Time {
publicvoid starttime();
}
publicclass Date{
publicstaticvoid main(String[] args) {
Time t =new Time(){
publicvoid starttime() {
System.out.println("the time used is:");
}
};
t.starttime();
}
}
多线程实现匿名内部类
publicclass Sum{
publicstaticvoid main(String[] args) {
Thread s= new Thread() {
publicvoid count() {
i=1;
S=0;
while(i<=100) {
s=s+i;
i++;
}
System.out.print(s);
};
s.start();
}
}
Runnable接口内部类实现
publicclass Sum{
publicstaticvoid main(String[] args) {
Runnabler = new Runnable(){
publicvoid count() {
i=1;
S=0;
while(i<=100) {
s=s+i;
i++;
}
System.out.print(s);
};
s.start();
publicclass TestAnonymousInterClass{
publicstaticvoid main(String args[]){
TestAnonymousInterClass test=new TestAnonymousInterClass();
test.show();
}
//在这个方法中构造了一个匿名内部类
privatevoid show(){
Out anonyInter=new Out(){// 获取匿名内部类实例
void show(){//重写父类的方法
System.out.println("this is Anonymous InterClass showing.");
}
};
anonyInter.show();// 调用其方法
}
}
// 这是一个已经存在的类,匿名内部类通过重写其方法,将会获得另外的实现
class Out{
void show(){
System.out.println("this is Out showing.");
}
}