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

    **
    *内部类:将一个类定义置入另一个类定义中就叫作“内部类”
    *特点:
    *1.内部类可以访问外部的成员,但外部类不能访问内部的成员。
    *2.外部类的修饰符只有两种:public和默认,而内部类的修饰符可以是public,protected,默认,private
    *3.内部类成员只有在内部类的范围之内是有效的。
    *4.用内部类定义在外部类中不可访问的属性。这样就在外部类中实现了比外部类的private还要小的访问权限。
    *内部类的分类:成员内部类,静态内部类,方法内部类,匿名类。
    *成员内部类:将一个类作为另外一个类的成员
    */
    //外部类

    public class OuterClass {
    //外部类的成员
    private String name="zhangsan";
    private int num=10;
    //外部类的方法
    public void outerMethod(){
    //	System.out.println(a);//外部类不能访问内部类的成员
    }
    //内部类
    public class InnerClass{
    //内部类的成员
    private int num=20;
    private int a=30;
    //内部类的方法
    public void innerMethod(){
    System.out.println("OuterClass--->name="+name);//内部类可以访问外部类的成员
    System.out.println("OuterClass--->num="+OuterClass.this.num);//外部类的成员
    System.out.println("InnerClass--->num="+this.num);//内部类的成员
    }
    }
    
    public static void main(String[] args) {
    /*
    * 创建内部类的实例:
    * 外部类.内部类 对象名 = new 外部类().new 内部类();
    */
    OuterClass.InnerClass innerClass = new OuterClass().new InnerClass();
    innerClass.innerMethod();
    
    }
    
    }
    

      

    匿名类:

    匿名内部类Anonymous
    可以实现一个接口,或者继承一个父类
    只能实现一个接口
    适合创建那种只需要一次使用的类,不能重复使用。比较常见的是在图形界面编程GUI里用得到。
    匿名内部类要使用外部类的局部变量,必须使用final修饰该局部变量

    public class TestAnonymous {
    public static void main(String[] args) {
    //实现一个接口的匿名内部类
    /*
    * class MyClass implements MyInterface{
    * public void test(){
    * ..
    * }
    * }
    * MyClass myClass = new MyClass();
    * myClass.test();
    */
    new MyInterface() {
    public void test() {
    System.out.println("测试匿名内部的test方法....");
    }
    }.test();
    /*
    * 继承的匿名类。
    * class MyThread extends Thread{
    * public void run(){
    * .... 
    * }
    * }
    * MyThread myThread = new MyThread();
    * myThread.start();
    */
    new Thread(){
    public void run() {
    System.out.println("Thread....run方法...");
    }
    }.start();
    }
    }
    
    

      

    方法内部类:在方法中定义的内部类。如果方法内部类中需要访问方法中局部变量,该局部变量必须使用final修饰

    public class OuterClass3 {
    // 外部类的成员
    private String name = "zhangsan";
    private int num = 10;
    
    // 外部类的方法
    public void outerMethod(){
    //方法内部类
    class InnerClass{
    //内部类的成员
    private final int num=20;
    private int a=30;
    //内部类的方法
    public void innerMethod(){
    System.out.println("OuterClass--->name="+name);//内部类可以访问外部类的成员
    System.out.println("OuterClass--->num="+OuterClass3.this.num);//外部类的成员
    System.out.println("InnerClass--->num="+num);//内部类的成员
    }
    }
    InnerClass innerClass = new InnerClass();
    innerClass.innerMethod();
    }
    
    public static void main(String[] args) {
    OuterClass3 outerClass = new OuterClass3();
    outerClass.outerMethod();
    }
    
    }
    
     
    

      

    静态内部类:使用static修饰的内部类。静态内部只能访问外部的静态成员。

    public class OuterClass3 {
    // 外部类的成员
    private String name = "zhangsan";
    private int num = 10;
    
    // 外部类的方法
    public void outerMethod(){
    //方法内部类
    class InnerClass{
    //内部类的成员
    private final int num=20;
    private int a=30;
    //内部类的方法
    public void innerMethod(){
    System.out.println("OuterClass--->name="+name);//内部类可以访问外部类的成员
    System.out.println("OuterClass--->num="+OuterClass3.this.num);//外部类的成员
    System.out.println("InnerClass--->num="+num);//内部类的成员
    }
    }
    InnerClass innerClass = new InnerClass();
    innerClass.innerMethod();
    }
    
    public static void main(String[] args) {
    OuterClass3 outerClass = new OuterClass3();
    outerClass.outerMethod();
    }
    
    }
    
     
    

      

  • 相关阅读:
    android 网络 post get
    java 命名规范
    android 判断service是否开启
    android 无线连接eclipse
    eclipse jar java.lang.NoClassDefFoundError
    eclipse 默认 utf8
    timer timetask handler
    android 自定义动画按钮
    设计网站
    java 分解arraylist中单个对象 的属性名与值
  • 原文地址:https://www.cnblogs.com/benpaozhimeng/p/6979830.html
Copyright © 2011-2022 走看看