java 内部类(匿名类,匿名对象,静态内部类)详解及实例
程序员文章站
2024-03-09 17:39:35
内部类的介绍
定义在另外一个类中的类,叫内部类
成员内部类
1..new 创建成员内部类必须先创建外部类的实例,然后通过.new 创建内部类的对象
2..thi...
内部类的介绍
定义在另外一个类中的类,叫内部类
成员内部类
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"); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!