java 内部类(匿名类,匿名对象,静态内部类)详解及实例
内部类的介绍
定义在另外一个类中的类,叫内部类
成员内部类
1..new 创建成员内部类必须先创建外部类的实例,然后通过.new 创建内部类的对象
2..this 可以通过外部类的类名.this去访问外部类的所有属性和方法。
public class Test1 { String name = "asnd"; public static void main(String[] args) { Test1 test1 = new Test1(); Inner mInner = test1.new Inner(); mInner.print(); } void show() { System.out.println("show"); } public class Inner { String name = "123"; private void print(){ show(); System.out.println(name);//打印的是123 System.out.println(Test1.this.name);//打印的是asnd } } }
匿名内部类
没有名字的类,创建类的同时,也会创建一个对象。
只需要用到一次的类,就可以使用匿名内部类
File file = new File("D:/cc.txt") { @Override public boolean delete() { System.out.println("是否删除y/n"); Scanner input = new Scanner(System.in); String str = input.next(); if (str.equals("y")) { return super.delete(); } System.out.println("删除失败"); return false; } }; file.delete(); }
匿名对象
该对象只需要访问一次.
new Thread() { @Override public void run() { System.out.println("线程开始!"); try { Thread.sleep(2000); System.out.println("线程结束!"); } catch (Exception e) { e.printStackTrace(); } super.run(); } }.start();
静态内部类
1.静态内部类只能访问外部类静态的方法和变量,不能访问非静态。
2.静态内部类可以不需要创建外部类的引用,而直接创建。
匿名内部类访问局部变量
内部类访问局部变量必须final,如果没有加,jdk1.8默认加上去了
当所使用的变量是在变的时候可以用下面的方法,也可以把下面的i在开始的时候定为静态的
for (int i = 0; i < 5; i++) { final int finali = i; new Thread() { public void run() { System.out.println(finali); }; }.start(); }
下面介绍一下内部类的实现技巧
public static void main(String[] args) { Lam mLam = new Lam(); //第一种实现的方法 mLam.to(new Ligh() { @Override public void shin() { System.out.println("on的第一种方法"); } }); //第二种实现方法 class MyLam implements Ligh{ @Override public void shin() { System.out.println("第二种"); }} mLam.to(new MyLam()); } } interface Ligh { void shin(); } class Lam { public void to(Ligh ligh) { ligh.shin(); System.out.println("on"); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
更多java 内部类(匿名类,匿名对象,静态内部类)详解及实例相关文章请关注PHP中文网!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。
