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

    静态内部类特点:
    1.使用static修饰的成员内部类是静态内部类
    2.静态内部类和外部类没有任何关系,只是在生成类名和类定义时有影响。静态内部类可以看做是与外部类平级的类。使用方法与外部类平级的类完全相同。
    3.创建静态内部类的实例使用 外部类名.内部类名 实例名 = new 外部类名.内部类名(参数)
    静态内部类有以下限制:
    1.静态内部类不能与外部类重名
    2.静态内部类不能访问外部类的非静态的属性和方法。外部类不能够访问内部类的非静态属性和方法。

    public class StaticInnerClass {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Outer1.Inner1 inner = new Outer1.Inner1();//构造静态内部类对象
    		inner.inner();
    		System.out.println("*******************");
    		Outer1 outer = new Outer1();
    		outer.outer();
    	}
    
    }
    class Outer1{
    	private String name = "张三";
    	private int num1 = 1;
    	private static int num3 = 100;
    	public void outer() {
    		System.out.println(name+" "+num1);
    		Inner1 inner1 = new Inner1();
    		inner1.inner();
    		System.out.println(inner1.name);//可以调用静态内部类,需要创建对象
    		System.out.println(Inner1.num2);
    		System.out.println(Inner1.num3);
    	}
    	
    	public static class Inner1{
    		private String name = "李四";
    		private static int num2 = 2;
    		private static int num3 = 99;
    		public void inner() {
    			System.out.println(name+" "+num2);
    			//System.out.println(Outer1.this.name+" "+Outer1.this.num1);
    			//静态内部类不能访问外部类的非静态成员
    			//outer();
    			//Outer1.this.outer();
    			System.out.println(num3);
    			//System.out.println(Outer1.this.num3);
    			System.out.println(Outer1.num3);//静态内部类调用外部类成员不用this.的方式,直接去掉
    		}
    	}
    }
    

      

  • 相关阅读:
    一个Package Load Failed问题的解决方法

    .NET相关的最好东西--全球最新评价
    一年了...
    MSBuild 的简单入门
    开发基于.NET Compact Framework的程序时, 常遇到的问题(2) 为什么在Visual Studio 2003调试程序时不能通过ActiveSync连接PDA
    如何:显示用逗号分隔的项集合(摘自MSDN)
    每日一句(2008.10.8)
    每日一句(2008.10.16)
    男人这辈子
  • 原文地址:https://www.cnblogs.com/liubing2018/p/8455930.html
Copyright © 2011-2022 走看看