A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sunweipan 中级黑马   /  2016-5-25 23:02  /  145 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

内部类
  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();
                       
                          }
                  }





   

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马