黑马程序员_内部类

            ------ android培训java培训、java基础学习技术总结、期待与您交流! ----------

 

内部类:定义在类里面的类
     1.内部累访问规则
          内部累可以直接访问外部类中的成员,包私有的
          外部类要访问内部类,必须减累内部类对象
        内部类之所以可以访问外部类的成员,是因为内部累持有外部类的一个引用  格式 外部类名.this
     2.访问格式
      当内部类建立在外部类成员位置上,而且非私有,可以在外部其他类中,可以直接定义内部累对象
       格式:
         外部类名.内部类名 变量名=new 外部类对象.内部类对象;
         当内部类在成员位置,可以被修饰符修饰
            比如private,将内部类在外部类中进行封装
                   static,静态内部类只可以访问外部类的静态成员,出现了访问局限
     *在外部其他类中如何直接访问static内部类的非静态成员呢?
     *new Outer.Inner().function();
     *在外部其他类中,如何直接访问内部累的静态成员呢?
     *Outer.Inner,function();
     *内部类中定义静态成员,那么该内部类必须是静态类
     *当外部类中的静态方法访问内部类时,内部类也必须是静态的。
     *
     *当描述事物是,事物的内部还有事物,可以用内部类来描述
     *因为内部事物在使用外部事物的内容
     *当内部事物想要直接访问外部事物的内容时,将内部事务定义在外部事物中,代码是最优的。
     *创建内部类时,把内部类封装在外部类中,提供一个外部访问的方法。不允许外部其他类直接访问。

示例1如下:

class Outer{
	int num=4;
	void method(){
		Inner in=new Inner();
		in.function();
		System.out.println("outer:"+num);
	}
	class Inner{
		int num=5;
		void function(){ 
			int num=6;
			System.out.println("innner:"+Outer.this.num);
		}
	}
}
public class InnerDemo {
	public static void main(String[] args) {
		Outer out=new Outer();
		out.method();
		Outer.Inner in=new Outer().new Inner();
	}

}

 示例2如下:

class Outer2{
	 static class Inner{
		static void show(){ 
			System.out.println("innner2:");
		}
	}
	public static void method(){	
	     Inner.show(); 
	}
}
public class InnerDemo2 {
	public static void main(String[] args) {
		Outer2.method();
	}

}

 示例3如下:

class Body{ 
	private class Heart{
		public void method(){
			System.out.println("跳动!");
		}
	}
	public void show(){
		new Heart().method();
	}
	
}
public class InnerDemo {
	public static void main(String[] args) {
		new Body().show();
	}

}

 

            ------ android培训java培训、java基础学习技术总结、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值