内部类分为成员内部类与局部内部类。
我们定义内部类时,就是一个正常定义类的过程,同样包含各种修饰符、继承与实现关系等。在内部类中可以直接访问外部类的所有成员。
package com.oracle.demo02; //普通的函数方法 //内部类
成员内部类,定义在外部类中的成员位置。与类中的成员变量相似,可通过外部类对象进行访问
public class Outer { int i=0; class inner{ int i=1; public void show(){ int i=2; //show方法直接打印 2 System.out.println(i); //访问inner 1 System.out.println(this.i); //outer下的i 0 System.out.println(Outer.this.i); } } }
public class Demo01 { public static void main(String[] args) { //掉内部类
成员内部类定义: //外部类类名.内部类类名 变量名=new 外部类类名().内部类类名(); 构造方法 Outer.inner oi=new Outer().new inner(); //变量名.方法名(); oi.show(); } }
局部内部类
局部内部类,定义在外部类方法中的局部位置。与访问方法中的局部变量相似,可通过调用方法进行访问
在外部类方法中,创建内部类对象,进行访问 public class Out { public void show(){ //局部内部类 class in{ public void in(){ System.out.println("这是局部类"); } } //show下面的方法内部类,匿名对象 new in().in(); } } 局部内部类测试 public class Demo02 { public static void main(String[] args) { Out out=new Out(); out.show(); }
匿名局部类:
//父类接口 public interface Somking { public abstract void smoke(); }
public static void main(String[] args) { //匿名内部类,new父类或者接口 ,直接实现接口的实现类对象(直接重写) 多态 Somking s=new Somking(){ //打印抽烟 public void smoke() { System.out.println("抽烟"); } }; //多态父类有多少调多少 s.smoke();
原文:https://www.cnblogs.com/a199706/p/11438164.html