diff --git a/day11/src/com/inmind/inner_class03/Demo04.java b/day11/src/com/inmind/inner_class03/Demo04.java index a617056..34d0d30 100644 --- a/day11/src/com/inmind/inner_class03/Demo04.java +++ b/day11/src/com/inmind/inner_class03/Demo04.java @@ -1,4 +1,5 @@ package com.inmind.inner_class03; + /* 匿名内部类:定义在方法中的一个没有名字的类(属于局部内部类的一种),它的本质是一个父类或者接口的子类或实现类 匿名内部类的定义: @@ -59,7 +60,44 @@ public class Demo04 { } }; nc.mehtod(); + System.out.println("-------------------以下是匿名对象和匿名内部类的介绍----------------"); + //匿名内部类和匿名对象的区别 + //new Scanner(System.in).nextInt();//匿名对象 + //匿名对象(包含了匿名内部类的定义) + new MyInterface(){//当前的大括号里面就是接口实现类的定义(匿名内部类) + //当前既是匿名内部类,也是MyInterface的实现类 + @Override + public void method() { + System.out.println("匿名内部类【实现类】实现了抽象方法method"); + } + }.method(); + System.out.println("-----------------------------------"); + //匿名内部类·书写起来很麻烦,直接使用快捷方式:new 接口名|抽象父类名|普通类名 弹出{....} + MyInterface myInterface2 = new MyInterface() { + @Override + public void method() { + System.out.println("匿名内部类重写了method方法"); + } + }; + myInterface2.method(); + + AbstraceClass ac1 = new AbstraceClass() { + @Override + public void method() { + + } + }; + + NomalClass nc1 = new NomalClass(){ + int i; + String name; + + @Override + public void mehtod() { + super.mehtod(); + } + }; } }