封装(内部类)

1、封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

2、包的命名全部小写。

3、Java访问修饰符:

private:本类

默认:本类,同包。

protected:本类,同包,子类。

public:本类,同包,子类,其他。

4、内部类:就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。

内部类作用:内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类;内部类可以直接

访问外部类的所以数据,包括私有的数据;内部类所实现的功能,使用外部类也同样实现,只是有时候使用内部类更加方便。

内部类种类:成员内部类(也叫做普通内部类)、静态内部类、方法内部类、匿名内部类。

(1)Java中的成员内部类:

package com.imooc;

public class Outer {
	private int a=99;
	public class Inner{
		int b=2;
		public void test(){
			System.out.println("访问外部类中的a:"+a);
			System.out.println("访问内部类中的b:"+b);
		}
	}
	
	public static void main(String[] args) {
		Outer o=new Outer();
		Inner i=o.new Inner();
		i.test();		
	}
}

执行结果:

访问外部类中的a:99
访问内部类中的b:2

注意:

Inner类可以使用任意的访问控制符,如public、protected、private等;Inner类中定义的方法test()可以直接访问Outer类中的

数据,不受访问控制符的影响,如此处访问私有属性a;

使用成员内部类时,必须使用外部类对象来创建内部类对象,不能直接new一个内部类对象,外部类不能直接访问内部类的成员和方法 。

当内部类和外部类有相同的成员变量或者方法时,内部类默认访问自己的成员变量或方法,如果要访问Outer的,可使用this。

public class Outer {
	private int b=99;
	public class Inner{
		int b=2;
		public void test(){
			System.out.println("访问外部类中的a:"+Outer.this.b);
			System.out.println("访问内部类中的b:"+b);
		}
	}
(2)Java中的静态内部类:是static修饰的内部类。

public class Outer {

	static int b=1;
	public static class SInner{
		int b=2;
		public void test(){
			System.out.println("访问外部类中的a:"+Outer.b);
			System.out.println("访问内部类中的b:"+b);
		}
	}
	
	public static void main(String[] args) {
		SInner si=new SInner();
		si.test();		
	}
}
注意:

创建静态内部类的对象时可以直接new;

静态内部类补鞥呢直接访问外部类的非静态成员,但是可以通过new 外部类().成员 的方式访问。

(3)Java中的方法内部类:就是内部类定义在外部类的方法中,方法内部类只能在该方法的内部可见,即只在该方法内可以使用。

package com.imooc;

public class Outer {
	public void show(){
		final int a=25;
		int b=13;
		//方法内部类
		class MInner{
			int c=2;
			public void print(){
				System.out.println("访问外部类的方法中的变量a:"+a);
				System.out.println("访问内部类中的变量c:"+c);	
			}
		}
		MInner mi=new MInner();//创建内部类的对象
		mi.print();//调用内部类的方法
	}
	
	public static void main(String[] args){
		Outer ou=new Outer();
		ou.show();//调用外部类的方法
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值