码迷,mamicode.com
首页 > 编程语言 > 详细

java静态内部类

时间:2018-02-20 22:50:49      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:[]   gpo   静态   实例   cin   实例名   out   静态属性   print   

静态内部类特点:
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.的方式,直接去掉
		}
	}
}

  

java静态内部类

标签:[]   gpo   静态   实例   cin   实例名   out   静态属性   print   

原文地址:https://www.cnblogs.com/liubing2018/p/8455930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!