所谓内部类就是在类的内部声明类 ,这样内部类可以分为 成员内部类 和局部内部类。
下面是学习笔记:
package oop.inner_class; import oop.inner_class.Person.Legs; public class InnerClassTest { public static void main(String[] args) { //创建Legs实例(静态成员内部类): Person.Legs legs = new Person.Legs(); legs.say(); //创建Brain实例(非静态成员内部类): // Person.Brain brain=new Person.Brain(); 错误的 Person p=new Person(); Person.Brain brain =p.new Brain(); brain.show(); } } class Person{ String name; public void say() { System.out.println("人可以说话"); } //非静态成员内部类 class Brain{ String name; public void show() { say();//可以调用外部类的方法 } public void method(String name) { System.out.println(name);//形参 System.out.println(this.name);//Brain的name(内部类的属性) System.out.println(Person.this.name);//Person的name(外部类的属性) } //静态成员内部类 static class Legs{ String name; double width; public void say() { System.out.println("这是大腿"); } public Legs() { } } public void method() { say(); //局部内部类 class AA{ } } { //局部内部类 class BB{ } } public Person() { class CC{ } } } }
package oop.inner_class; public class InnerClassTest1 { //开发中很少见 public void method() { //局部内部类 class AA{ } } //返回一个实现了Comparable接口的类的对象 public Comparable getComparable() { class MyComparable implements Comparable{ //创建一个实现了Comparable接口的类:局部内部类 //方法一: @Override public int compareTo(Object o) { // TODO Auto-generated method stub return 0; } } return new MyComparable(); //方式二 return new Comparable() { @Override public int compareTo(Object o) { // TODO Auto-generated method stub return 0; } }; } }
package oop.inner_class; public class InnerClassTest2 { } class Person{ public void method() { final int num=10; class AA{ public void show(){ System.out.println(num); // num=20; The final local variable num cannot be assigned, since it is defined in an enclosing type //此时的num必须为final类型的 } } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)