黑马程序员—内部类

1,内部类可以直接访问外部类的成员。包括私有。原因是内部类持有外部类的引用。外部类名.this.
2,外部类要访问内部类。需要建立内部类对象。其他类访问其内部类方式。Outer.Inner in =new Outer().new Inner();如果内部类被私有。则无法访问。只能被内部类的外部类访问。
3,内部类在成员上被static修饰时。只能访问外部类的静态成员。
注意:内部类定义了静态成员。内部类也必须是静态的。
--------外部类的静态方法访问内部类。内部类也必须是静态的。
 class Outer{
         int x=3;//Out.this.x
         class Inner{
             int x=4;//this.x
             void method(){
              int x=5;
              System.out.print(x);
              }
           }
}
4,内部类被定义在局部时,不可被成员修饰符修饰,可以直接访问外部类成员,因为持有外部类引用。但是不能访问所在局部的变量,除非被final修饰。如果想调用内部类必须在局部创建引用,调用其方法。
class Outer{
	void method(final int y){
			final int x=4;
			class Inner{
					void show(){ System.out.println(x+y); };
				}
			Inner i=new Inner();
			i.show();
		};
}

匿名内部类就是内部类的简写格式,前提是必须继承一个类或者实现了一个接口。用父类或者接口的名字直接建立子类对象,定义子类内容。

匿名内部类可以用父类的引用的。但是这个引用只能调用父类的方法和成员。无法调用子类的特有方法。

abstract class Inter{

void method();

          }

Test{

}

Test.function().method()的理解。因为没有new。所以function 一定是静态的。因为function有括号。所以他一定是一个方法。

而且返回值是一个Inter的子类对象。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值