内部类和局部内部类

内部类

成员内部类

直接在外部类中定义一个类,就是成员内部类

成员内部类不能出现静态成员(静态属性和静态方法都不可以)

在成员内部类中可以访问外部类的任何属性和任何方法

内部类语法:

class  A{

  class B{

}

} 

内部类生成的文件格式是: 外部类$内部类.class

局部内部类

不能有public、protected、private以及static修饰符的。

静态内部类

 静态内部类也是定义在另一个类里面的类,在类的前面加一个关键字static

特点

不需要依赖于外部类的

 static class my {
      
    }

如果外部类和内部类存在相同的成员属性名时,访问外部类的成员属性时应该用 

外部类名.this.成员属性名

内部类对象的创建:如果在外部类的成员方法中可以直接创建内部类的对象,

且内部类的对象可以访问内部类的所有成员

如果在外部类的外面创建内部类的对象,则必须依赖外部类的对象才能创建内容类的对象,内部类的对象只能访问public 成员

public class MyClass {
	private String name ="外部NAME";
	private static String address="这是地址"; 
	public class MyInnerClass{ 
		public String  phone = "12345";
		private String computer ="1111";
		public void innerMethod(){
			System.out.println("name:"+name+",地址"+address);
		}
	}
	public void say(){
		System.out.println("呵呵:"+ name +"  " + address); 
		//在外部了的成员方法中直接创建内部类对象
		MyInnerClass mic = new MyInnerClass();
		mic.computer="222";
		mic.phone="1111";
	}  
}

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	
			//在当前类的外部创建成员内部类对象,需要依赖外部类的对象
			MyClass mc = new MyClass();
			MyInnerClass innerClass = mc.new MyInnerClass(); 
			MyInnerClass innerClass2 =new MyClass().new MyInnerClass();
			innerClass.innerMethod();
			innerClass.phone="ssss";
			//innerClass.computer="aaaaaaaa";不能访问 
		}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值