zoukankan      html  css  js  c++  java
  • 内部类

    内部类(当作类中的一个普通成员变量,只不过此成员变量是class的类型)

      一个java文件中可以包含多个class,但是只能有一个public  class

      如果一个类定义在另一个类的内部,此时可以称之为内部类

    使用:

      创建内部类的时候,跟之前的方法不一样,需要在内部类的前面添加外部类来进行修饰

        例如:InnerClassDemo为外部类,InnerClass为内部类

           InnerClassDemo.InnerClass  inner  =  new  InnerClassDemo().new  InnerClass();

    特点:

      1.内部类可以方便的访问外部类的私有属性

      2.外部类不能直接访问内部类的私有属性,需要创建出内部类的对象后才能获取

     1 public class Outer {
     2 
     3     private String name = "zhangsan";
     4 
     5     public void get(){
     6         System.out.println(new Inner().name);
     7     }
     8 
     9     class Inner{
    10         private String name = "lisi";
    11 
    12     }
    13 
    14     public static void main(String[] args) {
    15         new Outer().get();
    16     }
    17 }

      3.内部类中不能定义静态属性

      4.当内部类与外部类具有相同的私有属性时,在内部类中访问的时候,可直接访问内部类的属性,若需要访问外部类的属性,需要添加外部类类名.this.属性

        注意:下面代码中Outer.this.name中的this不可以去掉,去掉之后语义为Outer这个类中的静态属性,而属性name未设置静态

           Outer.this表示为Outer这个类中的对象,Outer.this.name表示对象.属性

     1 public class Outer {
     2 
     3     private String name = "zhangsan";
     4 
     5     class Inner{
     6         private String name = "lisi";
     7 
     8         public void show(){
     9             System.out.println(name);
    10             System.out.println(this.name);
    11             System.out.println(Outer.this.name);
    12         }
    13     }
    14 
    15     public static void main(String[] args) {
    16         Outer.Inner inner = new Outer().new Inner();
    17         inner.show();
    18     }
    19 }
    20 输出结果为:lisi  lisi  zhangsan

    分类:

      匿名内部类:一个类在实现某个接口时,使用过程中只使用一次,无其他用途,这时可以不创建具体的类,采用new interface()(添加未实现的方法)

      静态内部类:在内部类中可以定义静态内部类,使用static关键字进行修饰,使用规则

            外部类.内部类  类的引用名称  =  new  外部类.内部类();

      方法内部类:在外部类的方法中也可以定义类,此时叫做方法内部类(了解即可)

            使用时候需要注意,只能在方法中创建对象,因为此class的作用域就是当前方法

        

  • 相关阅读:
    GNU make manual 翻译(九十九)
    GNU make manual 翻译( 九十五)
    Shell的 for 循环小例子
    makefile中对目录遍历的小例子
    GNU make manual 翻译(九十三)
    GNU make manual 翻译( 一百)
    GNU make manual 翻译( 九十七)
    GNU make manual 翻译( 九十八)
    mapserver4.8.3 的readme.win32的中文翻译文件
    遥控器编程
  • 原文地址:https://www.cnblogs.com/lyc-code/p/12498402.html
Copyright © 2011-2022 走看看