一.匿名内部类:
1.匿名内部类其实就是内部类的简写格式。
2.定义匿名内部类的前提:内部类必须是继承一个抽象类或者实现接口。只要一个类是抽象的或是一个接口,那么其子类中的方 法都可以使用匿名内部类来实现
3.匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4.其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。
5.匿名内部类中定义的方法最好不要超过3个。
二.通过继承一个抽象类来定义匿名内部类。
package com.saiermeng;
abstract class AbsDemo
{
abstract void show();
}
class Outer4
{
int x = 3;
public void function()
{
AbsDemo d = new AbsDemo()
{
int num = 9;
void show()
{
System.out.println("num==="+num);
}
void abc()
{
System.out.println("haha");
}
};
d.show();
}
}
class InnerClassDemo4
{
public static void main(String[] args)
{
new Outer4().function();
}
}
运行结果是:
num===9
三.通过实现一个接口来定义匿名内部类。
package com.saiermeng;
interface Inter0{
void method();
}
class Test0{
static Inter0 function(){
return new Inter0(){ //new 就是新建了一个实现接口抽象方法的对象
public void method() {
System.out.println("method run");
}
};
}
}
public class InnerClassTest0 {
public static void main(String[]args){
Test0.function().method();
// 通过一个方法得到实现接口的子类对象,通过对象调用方法,就得到了Test0.function().method();
show(new Inter0(){
public void method() {
System.out.println("method show run");
}
});
}
public static void show(Inter0 in){
in.method();
}
}
运行的结果是:
method run
method show run
1.匿名内部类其实就是内部类的简写格式。
2.定义匿名内部类的前提:内部类必须是继承一个抽象类或者实现接口。只要一个类是抽象的或是一个接口,那么其子类中的方 法都可以使用匿名内部类来实现
3.匿名内部类的格式: new 父类或者接口(){定义子类的内容}
4.其实匿名内部类就是一个匿名子类对象。而且这个对象有点胖。可以理解为带内容的对象。
5.匿名内部类中定义的方法最好不要超过3个。
二.通过继承一个抽象类来定义匿名内部类。
package com.saiermeng;
abstract class AbsDemo
{
abstract void show();
}
class Outer4
{
int x = 3;
public void function()
{
AbsDemo d = new AbsDemo()
{
int num = 9;
void show()
{
System.out.println("num==="+num);
}
void abc()
{
System.out.println("haha");
}
};
d.show();
}
}
class InnerClassDemo4
{
public static void main(String[] args)
{
new Outer4().function();
}
}
运行结果是:
num===9
三.通过实现一个接口来定义匿名内部类。
package com.saiermeng;
interface Inter0{
void method();
}
class Test0{
static Inter0 function(){
return new Inter0(){ //new 就是新建了一个实现接口抽象方法的对象
public void method() {
System.out.println("method run");
}
};
}
}
public class InnerClassTest0 {
public static void main(String[]args){
Test0.function().method();
// 通过一个方法得到实现接口的子类对象,通过对象调用方法,就得到了Test0.function().method();
show(new Inter0(){
public void method() {
System.out.println("method show run");
}
});
}
public static void show(Inter0 in){
in.method();
}
}
运行的结果是:
method run
method show run