zoukankan      html  css  js  c++  java
  • 3种类内部的用法(成员,局部,匿名)

     1 package Inner;
     2 /**
     3  * 测试内部类的使用
     4  * @author 小王同学
     5  * 1.成员内部类 ①非静态内部类    ②静态内部类
     6  * 2.局部内部类
     7  * 3.匿名内部类
     8  * 总结: 内部类不只是普通的类,还可以是接口(Interface)默认static abstract修饰 ,抽象类(abstract)
     9  *         使用方法内部类时,一定要在内部类中调用一下内部类中的方法否则无法使用.  列如:new Inner3().test();
    10  *         成员内部类就是类的一个成员变量. 
    11  *         静态内部类只能使用外部类的静态成员. 普通内部类可以调用外部类的任何方法和属性,私有的也可以.
    12  *         普通内部类就是方法的方法的一个局部变量,作用域只限于方法体中.
    13  *         匿名内部类就是用来实现抽象方法或者是接口的抽象方法的.
    14  *         使用匿名内部类实现抽象类的方法时,必须要抽象类声明为静态的(static)才行,因为在main方法中不能直接调用非静态方法.
    15  */
    16 public class Outer {
    17     private String name;
    18     private static  int age;
    19     //1.测试成员内部类  
    20     class Inner{
    21     }
    22     static class Inner2{
    23          void run(){
    24             System.out.println(age);//静态内部类只能使用外部类的静态成员。
    25         }
    26         }
    27     //2.测试方法内部类
    28         void testxx(){
    29         int a =10;
    30             class Inner3{
    31                 public void test(){//内部累的方法,可以和外部类的方法重名.
    32                     System.out.println("这是方法内部类");
    33                     System.out.println("这是外部方法的局部变量:a="+a);
    34                     System.out.println("这是外部方法的成员变量:age="+name);
    35                 }     
    36              
    37     }
    38 
    39                 new Inner3().test();//方法内部类在这里调用,不然在外界没有办法访问到
    40     }
    41     //3.测试匿名内部类
    42         interface  Inter { //接口和抽象方法也可以充当内部类使用
    43             void show();
    44         }
    45          static abstract class Inner4{ //这里不加static的话,在使用匿名内部类时,就无法
    46              abstract void  jump();
    47         }
    48         public static  void main(String[] args) {
    49         //1.成员内部类 
    50         /**两种定义非静态内部类的方法 */
    51         Inner n1 =new Outer().new Inner();
    52         Outer o1 =new Outer();
    53         Inner n2 =o1.new Inner();
    54         /**定义静态类的方法 */
    55         Inner2 n3 =new  Outer.Inner2();//直接使用new 外部类.内部类();
    56         //2.方法内部类
    57         /**调用方法内部类的方法 */
    58         new Outer().testxx();
    59         //3.匿名内部类
    60         /**这是实现接口的抽象方法*/
    61         Inter t1= new Inter(){
    62             @Override
    63             public void show() {
    64                 System.out.println("这是匿名内部类噢噢噢噢");        
    65             }
    66         };
    67         t1.show(); //调用匿名内部类
    68         /**实现抽象类的抽象方法 */
    69         Inner4 in4 =new Inner4() {
    70             @Override
    71             void jump() {
    72                 // TODO Auto-generated method stub
    73                 
    74             }
    75         };
    76 }
    77 }
  • 相关阅读:
    WPF 常用path示例
    Grid之 Gridlength 解析
    Binding Relative 示例
    Grid之 好玩的GridSplitter
    Blend 制作水晶按钮
    DockPanel—最守规矩布局控件
    万恶之源python介绍
    04.基本数据类型(list,tuple)
    02.万恶之源python 运算符和编码
    基本数据类型(int, bool, str)
  • 原文地址:https://www.cnblogs.com/xw1024/p/11188548.html
Copyright © 2011-2022 走看看