问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java内部类的匿名内部类

发布网友 发布时间:2022-04-25 20:43

我来回答

1个回答

热心网友 时间:2022-06-17 06:17

顾名思义,没有名字的内部类。表面上看起来它们似乎有名字,实际那不是它们的名字。
当程序中使用匿名内部类时,在定义匿名内部类的地方往往直接创建该类的一个对象。匿名内部类的声明格式如下:
new ParentName(){
...// 内部类的定义
}
匿名内部类就是没有名字的内部类。什么情况下需要使用匿名内部类?如果满足下面的一些条件,使用匿名内部类是比较合适的:
·只用到类的一个实例 。
·类在定义后马上用到。
·类非常小(SUN推荐是在4行代码以下)
·给类命名并不会导致你的代码更容易被理解。
在使用匿名内部类时,要记住以下几个原则:
·匿名内部类不能有构造方法。
·匿名内部类不能定义任何静态成员、静态方法。
·匿名内部类不能是public,protected,private,static。
·只能创建匿名内部类的一个实例。
·一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类。
·因匿名内部类为局部内部类,所以局部内部类的所有*都对其生效。
A、继承式的匿名内部类
public class Car {
public void drive(){
System.out.println(Driving a car!);
}
public static void main(String[] args) {
Car car = new Car(){
public void drive() {
System.out.println(Driving another car!);
}
};
car.drive();
}
}
结果输出了:Driving another car! Car引用变量不是引用Car对象,而是Car匿名子类的对象。
B、接口式的匿名内部类。
interface Vehicle {
public void drive();
}
class Test{
public static void main(String[] args) {
Vehicle v = new Vehicle(){
public void drive(){
System.out.println(Driving a car!);
}
};
v.drive();
}
}
上面的代码很怪,好像是在实例化一个接口。事实并非如此,接口式的匿名内部类是实现了一个接口的匿名类。而且只能实现一个接口。
C、参数式的匿名内部类。
class Bar{
void doStuff(Foo f){
f.foo();
}
}
interface Foo{
void foo();
}
class Test{
static void go(){
Bar b = new Bar();
b.doStuff(new Foo(){
public void foo(){
System.out.println(foofy);
}
});
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 java内部类,匿名内部类这些是什么?求详细用法,还有语法。 JAVA中内部类和匿名内部类的区别,分别在什么 哪位朋友能帮我详解一下Java的内部类和匿名内部类? java内部类和匿名内部类的区别 java内部类和匿名内部类的区别是什么? 滕王阁在南昌哪个区 滕王阁的资料? 南昌滕王阁的介绍 益和猫砂和豆腐猫砂,哪一种更好? 豆腐猫砂推荐 小壹智能猫厕所适用哪些猫砂? 请问,豆腐猫砂怎么用,豆腐猫砂怎么清理 豆腐猫砂能吃吗,豆腐猫砂可食用吗 我家猫很挑!猫咪不肯用豆腐猫砂,猫咪为什么不用豆腐砂??? 猫宠豆腐猫砂靠谱吗?吸味结团表现怎么样? LPR4.95贷款80万25年每月还款多少? 空气开关c100与C60的区别 贷款80万利率5.88贷24年,每个月交多少钱? 公积金贷款80万每月还多少 贷款80万。20年月供多少? java中的匿名类和内部类的关系?比如匿名类一定是内部类吗?或者内部类一定是匿名类吗? java 内部类 匿名类 Java里面什么是内部类、外部类、匿名内部类,构造函数等等??? java中为什么要引入内部类?还有匿名内部类? java匿名内部类具体概念是什么,在什么地方用到? Java匿名内部类怎样创建?有何作用和优点?创建线程怎样使用匿名内部类? java 匿名内部类 java 匿名内部类 如何实现? 举例说明 在自学JAVA,没有看懂JAVA中的匿名内部类,求解释 生肖鸡不能和什么属相配对? 鸡不能跟什么一起吃 听说在做鸡肉的时候要注意食材搭配,鸡不能和什么食物一起吃? 鸡不能和什么一起吃 苏州住房公积金提取需要什么条件 苏州住房公积金提取需要什么条件 苏州住房公积金在职怎么提取呢????自己可以提取吗?需要什么材料,流程 苏州住房公积金在职怎么提取呢????自己可以提取吗?需要什么材料,流程 EXEL单个表格里内含减法公式如何计算? AMD Radeon(TM) Vega 8 Graphics与GTX 1060哪个在游戏运行方面更好? amd radeon vega 8 graphics(2G/联想)是独立显卡吗?