黑马程序员技术交流社区

标题: 分享 内部类 [打印本页]

作者: sunweipan    时间: 2016-5-25 23:02
标题: 分享 内部类
内部类
  a.匿名内部类:
     父类/父接口 变量名=new 父类/父接口(){

     };
     

     class Father{

     }
     interface Fly{
              void fly();
     }

     Fahter father=new Father(){//Father的子类对象

     };
     Fly fly=new Fly(){//Fly接口的子类对象
             public void fly(){

             }
     };
   b.局部内部类和成员内部类:
                  public class Person {
                          private String name;
                         
                          class Heart { //定义在成员位置上为成员内部类
                                  private int age;
                              private String name;
                                  public void heartMethod() {   
                                           System.out.println(this.name);
                                           System.out.println(name);//this.name和name都使用的是Heart的name
                                           System.out.println(Person.this.name);//由于Heart类的name和Person类的name重名
                                                                                //因此要想访问Person的name需要加Person.this来访问
                                           Person.this.getName();
                                  }
                          }
                  
                          public void setName(String name) {
                                  this.name = name;
                          }

                          public void outerMethod() {
                  
                                  class Inner { //局部内部类
                                          public void innerMethod() {
                                         System.out.println(Person.this.name);
                                         System.out.println(name);//即使不加Person.this默认也有,都是访问的Perso
                                          }
                                  }
                                  new Inner().innerMethod();
                          }
                         
                  

                          public String getName() {
                                  return name;
                          }
                  }

                  class Demo {
                          public static void main(String[] args) {
                  
                                  Person person = new Person();
                                  person.setName("张三");
                                 
                                  Person.Heart heart = person.new Heart();
                                 
                                  heart.heartMethod();
                         
                                  person.outerMethod();
                       
                          }
                  }





   





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2