zoukankan      html  css  js  c++  java
  • java内部类:成员内部类,静态内部类方法内部类,匿名内部类(A)

    
    
    package cn.kecheng;
    
    /**
     * 在java中,一个文件可以定义多个类,文件名必须和public 类型的类的类名保持一致。这两个类是平行关系。
     * 在java中,一个类也可以定义在一个类的内部,定义在内部的类称为内部类(Internalclass),
     * 定义在外部的类称为外部类(InternalClass class). 内部类根据具体的修饰符和具体位置分为很多情况:
     * 1成员内部类:一个内部类作为一个外部类的成员而存在,此时该内部类称为外部类的成员内部类。(也就是说内部类像方法和属性一样作为外部类的成员)
     * 2静态内部类:如果一个内部类被static修饰,我们成为这个内部类为静态内部类。
     */
    public class InternalClass {
        private String name = "张三";
    
         class Internal { // 【修饰符】(可省略)class 类名{},编译后结果为:InternalClass$Internal.class(看到这种文件名就可以确定为内部类($))
        //静态内部类:static class Internal{}    静态内部类可以访问外部类的(私有)静态成员
            
            
            
            // 特殊情况:外部类和内部类的变量同名,特殊情况:避免发生
            private String name = "李四";
            
            public void showInfo() {
                System.out.println(name);// 输出结果:张三。 所以内部类中可以访问外部类的私有变量
                
                System.out.println(this.name);// 访问内部类的私有成员
                System.out.println(InternalClass.this.name);// 访问外部类的私有成员(在前面加个类名)
            }
        }
    }
    
    
    


    package
    cn.kecheng; import cn.kecheng.InternalClass.Internal; //想创建外部类的对象,必须用import导入内部类 public class Test01 { public static void main(String[] args) { //内部类如何创建对象: InternalClass internalClass=new InternalClass();//1.创建一个外部对象: Internal internal=internalClass.new Internal();//2.(还要导入类)创建一个内部类必须在外部类的基础上创立 internal.showInfo(); //静态内部类创建对象: //Internal internal1=new InternalClass.Internal(); //把外部类名放在内部类名前面 //internal1.showInfo(); } }
    package cn.kecheng;
    
    /**
     * 3.方法内部类:如果一个内部类定义到一个方法中,成为方法内部类。
     */
    public class InternalClass {
    
        public void showInfo() {  
             final int a=10;            
            class Internal {
                public void print() {
                    System.out.println("show info");
                    
                    //a=20;//方法的局部变量进入方法内部类时,必须加final修饰。
                    System.out.println(a);
                }
            } //在InternalClass类的方法內部,在InternalClass类的方法内提取
            Internal internal = new Internal();
            internal.print();
    // 匿名对象(对象只用一次的情况,可以使用匿名对象) //new Internal().
    showInfo()
    } }
    package cn.kecheng;
    
    /**
     * 4.匿名内部类(A)
              未来一个类如果只使用一次,我们可以把类声明为匿名类。匿名类一般和内部类结合使用,形成匿名内部类。
     */
    public class InternalClass {
    
        public void showInfo() {  
            
    //创建一个接口Inter,里面有show方法       Internal类实现接口: 
    //  class Internal implements Inter{}   
    //把 Inter inter=new Internal();  inter.show();  可以写成匿名对象:new Internal().show();   
    //Internal()代表:class Internal implements Inter{} 
    //把内部类看成一个对象:所以下面是匿名内部类,new Inter(){}[代表Internal()].show();
            
            new Inter() {
                public void show(){
                    System.out.println();        
                }
            }.show();
    
        }
    
    }
  • 相关阅读:
    Json对象处理.将对象处理成dic数组.
    asp.net core 创建允许跨域请求的api, cors.
    (转载)dotnet core 中文乱码 codepages
    (转载)Memcached和Redis简介
    发送Json数据,WebApi查看时为Null的问题(已解决)
    Vs2017获取Git空仓库后创建解决方案及项目无法推送,推送失败的问题.
    前端:Jquery 处理同一Name的Radio组时,绑定checked属性异常的问题.(已解决)
    Vs2015 本地git获取的代码目录文件修改后,启动提示error:Unable to start program “C:Program Filesdotnetdotnet.exe” 已解决.
    .net core 发布后提示Start error
    .net core vs2015 vs2017打开后errpr
  • 原文地址:https://www.cnblogs.com/406070989senlin/p/10776448.html
Copyright © 2011-2022 走看看