Pragma mark — NO.1 匿名内部类

public class Main {

public static void main(String[] args) {

Outer o = new Outer();

o.print();

o.method1();

}

}

/*

* 匿名内部类

* 就是内部类的简化写法

* 前提:存在一个类或者接口

* 这里的类可以是具体类也可以是抽象类

* 格式:

* new 类名或者接口名() {

* 重写方法;

* };

*本质是:

* 是一个继承了该类或者是实现了该接口的子类匿名对象

* */

//创建一个接口

interface Inter {

public void method();

}

//先用有名字的内部类实现外部接口

class Outer {

//内部类实现外部接口

class Inner implements Inter {

public void method(){

System.out.println("这是一个内部类实现接口");

}

}

//再整个方法

public void print(){

Inner i = new Inner();

i.method();

}

//匿名内部其实是局部内部类,必须放在方法中

public void method1 (){

//注意匿名内部类的书写格式

//new 后面如果是类名就是继承自父类的名字

//如果是接口名,就是这个类要实现的接口

//整个这个代表子类对象,那么可以调用这个重写后的method方法。要好好理解下

new Inter () {//实现Inter接口

public void method(){

System.out.println("我是一个匿名内部类");

}

}.method();//这后面这个分号不能丢了

}

}

Pragma mark — NO.2 匿名内部类调用多个重写方法

public class Nimingneibulei1 {

public static void main (String[] args){

Test1 t = new Test1();

t.method();

}

}

//匿名内部类中重写多个方法调用

interface Inter1 {

public void show1();

public void show2();

}

class Test1 {

//通过如下例子我们就建议匿名内部类就用在只调用一个方法的情况

public void method(){

//匿名内部类

// new Inter1() {

//

// public void show1(){

//

// System.out.println("这是show1方法");

// }

// public void show2(){

// System.out.println("这是show2方法");

// }

//

// }.show1();

//

// new Inter1() {

//

// public void show1(){

//

// System.out.println("这是show1方法");

// }

// public void show2(){

// System.out.println("这是show2方法");

// }

//

// }.show2();

//换个简单点的写法

Inter1 i = new Inter1() {

public void show1(){

System.out.println("这是show1方法");

}

public void show2(){

System.out.println("这是show2方法");

}

};

i.show1();

i.show2();

}

}

Pragma mark — NO.3 匿名内部类的应用

public class Nimingneibulei2 {

public static void main (String[] args){

//我们要求是调用PersonDemo中的method方法

PersonDemo pd = new PersonDemo();

//这里要求我们传一个抽象类对象,但是抽象类对象不能够初始化。

//所以要我们传一个匿名内部类进去,这里不能直接传抽象类对象,我们可以

//传两种,要么传有名的子类对象,要么传匿名内部对象

// Person p = new Student();

// pd.method(p);

//我们用匿名内部类来做一下--匿名内部类当做参数传递,把匿名内部类当做一个对象

pd.method(new Person(){

//重写show()方法

public void show(){

System.out.println("匿名内部类实现");

}

});

}

}

//写个抽象类

abstract class Person{

public abstract void show();

}

//普通类

class PersonDemo {

public void method(Person p){

p.show();

}

}

//再创建个子类对象去继承抽象类

class Student extends Person {

public void show(){

System.out.println("我是一个有名的子类");

}

}

java内部类写法,Java匿名内部类相关推荐

  1. java内部类写法_Java匿名内部类的写法示例

    前言 在Java中调用某个方法时,如果该方法的参数是一个接口类型,除了可以传入一个参数接口实现类,还可以使用匿名内部类实现接口来作为该方法的参数. 匿名内部类其实就是没有名称的内部类,在调用包含有接口 ...

  2. java内部类文件,Java内部类学习

    Java内部类学习 1.内部类的实例与外部类的实例共享一种特殊的关系,这种特殊的关系为内部类中的代码提供对封装(外部)类成员的访问.其实,内部类就是外部类的一部分.不仅仅是"一部分" ...

  3. java内部类写法_Java学习-内部类

    一.概念 内部类:在一个类的内部定义的一个类: 分类: 可以分为 成员内部类.局部内部类.匿名内部类和静态内部类: <Think in java>): 1.内部类可以用多个实例,每个实例都 ...

  4. java内部类写法_java内部类怎么写

    一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正. 一.内部类基础 在Java中,可以将一个类定义在另一个类里面 ...

  5. java 内部类泛型,java – 使用泛型强制转换为内部类

    请考虑以下代码: public class Outer { public class Inner{ } public static Outer.Inner get(){ Object o = new ...

  6. Java内部类(匿名内部类)

    Java内部类(匿名内部类) 一.内部类 二.静态内部类 三.成员内部类 四.局部内部类(了解即可) 五.匿名内部类(重要) 一.内部类 1.概述 内部类就是一个定义在一个类里面的类,里面的类可以理解 ...

  7. java内部类之成员内部类、局部内部类和匿名内部类

    内部类概念 一个类中包含另外一个类. 分类 成员内部类. 局部内部类(包含匿名内部类). 成员内部类 定义格式: 修饰符 class 类名称 {修饰符 class 类名称 {//...}//... } ...

  8. Java内部类和匿名内部类的用法

    Java内部类和匿名内部类的用法     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51981163 一.内部类:   ...

  9. java中带参数匿名内部类_Java内部类之匿名内部类

    我们都知道Java中可以使用内部类,将一个类的定义放在另一个类的定义的内部,这就是内部类,但是匿名内部类往往使我们摸不着头脑,因为它并没有特定的名称,那么该如何使用它呢? 定义一个匿名内部类 publ ...

最新文章

  1. C#装箱和拆箱(值类型和引用类型之间的转换)
  2. Flask == scoped_session
  3. Idea缺少Version Control 底部菜单
  4. mybatis学习(53):构造方法映射
  5. 小学数学动画 android,小学数学动画教学下载-小学数学动画 安卓版v5.0-pc6手机下载...
  6. 软件行业大牛告诉你何谓成功?
  7. 《spring-boot学习》-07-spring data jpa
  8. 实验楼Python项目
  9. SVM中的核函数什么意思
  10. 报错’TypeError: only integer scalar arrays can be converted to a scalar index‘
  11. arma模型预测 matlab,MATLAB中ARMA模型预测差分问题
  12. 德芙网络营销策略ppt_德芙网络营销案例ppt采集
  13. 国外开放知识图谱_什么是开放知识,如何传播?
  14. 带权图 Weighted Graph
  15. テクニカルアーティストの基本的な役割と、もう1つ重要な役割
  16. 企业微信开发,嵌入自定义项目,及JS-SDK的引用
  17. java openni rgb显示_3D将深度映射到RGB(Kinect OpenNI Depthmap到OpenCV RGB Cam)
  18. js 12:00时间加上半小时,返回小时和分钟
  19. rt3290+linux驱动下载,Ralink雷凌RT3290蓝牙驱动
  20. Java操作wkhtmltopdf实现Html转PDF

热门文章

  1. 没人脉怎么干副业?适合没人脉的副业?
  2. mysql字符集和表字符集_Mysql数据库表引擎与字符集
  3. cordic算法反正切c语言,Cordic 算法之 反正切
  4. php遍历目录图片并显示,PHP读取目录下所有图片并输出一张图片地址
  5. 点号java_java的classpath路径中加点号 ‘.’ 的作用
  6. Ubuntu批量新建文件
  7. 【华为OD机试 2023】货币单位换算(C++ Java JavaScript Python)
  8. 计算机蓝屏原因原理,电脑蓝屏的正确处理方式
  9. paddle实现lenet5
  10. java世界中几种html解析的工具