Demo11_匿名内部类

package test03_1;

public class Demo11_NeiBuLei02 {
public static void main(String[] args) {
@SuppressWarnings(“unused”)
Outer12 out = new Outer12();
// out.method12();
// //如果inner对外提供,可以如此获取
// Outer12.Inner12 in = out.getObject();
// in.show();
//如果inner被private修饰则通过父类型获取
// AbsDemo a = out.getObject();//多态
// a.show();
}

}
/*内部类的延伸
* 内部类可以继承或者实现外部其他的类或者接口
*
* 好处:通过内部类的方式对类进行继承重写,或者接口进行实现
* 通过公共的方式对其内部类的对象进行访问。因为通常的内部类有可能被外部类封装其中
* 我们可以通过父类或者接口的方式访问内部类的对象
* */
//abstract class AbsDemo
//{
// abstract void show();
//}
interface Inter
{
void show1();
void show2();
}
class Outer12
{
int num = 3 ;
// class Inner12 extends AbsDemo
// {
// //重写抽象方法show
// void show ()
// {
// System.out.println(“num=”+num);
// }
// }
//获取内部类对象
// public Inner12 getObject()
// {
// return new Inner12();
// }

//再一个类中使用一个接口对象,可以通过内部类实现
class Inner123 implements Inter
{
    public void show1(){}
    public void show2(){}
}
public void method12()
{

// new Inner12().show();
// 不想创建具体的子类型 还想创建AbsDemo的子类对象
// 怎么实现?没有子类型,那么直接用父类型
// 可是该例子中是抽象类,怎么可以new对象呢?
// 抽象类之所以不能new对象时因为抽象方法没重写。所以直接重写抽象方法
// new AbsDemo()//这是一个AbsDemo的子类对象,这是一个带内容的子类
//这就是匿名内部类 格式:new 父类或者接口(){子类的内容}
// 匿名内部类是内部类的简化形式
// 匿名内部类的前提内部类要继承父类或者实现接口
// {
// void show()
// {
// //重写抽象的show方法
// System.out.println(“重写抽象的show方法”);
// }
// }.show();

// 1.
// new Inner123().show1();
// new Inner123().show2();

// 2.
// Inner123 in = new Inner123();
// in.show1();
// in.show2();

// 3.对其简化,写成匿名内部类的方式
Inter in = new Inter()
{
public void show1(){}
public void show2(){}
};
in.show1();
in.show2();//方法超过两个不用匿名内部类

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值