黑马程序员_内部类

 
内部类的访问规则:
1.内部类可以直接访问外部类的的成员 包括私有的。
之所以能够访问外部类的成员,是因为内部类中持有一个外部类的引用,
格式为 外部类.this.内部类
2.外部类要訪問內部類必須建立内部类的对象。
访问格式:
当内部类定义在外部类的成员位置上,而且是非私有的,可以在外部其他类中。
可以直接建立内部类的对象。
格式
外部类名.内部类名.变量名=外部类对象.内部类对象;
内部类在成员位置上,就可以被成员修饰符所修饰
 
在外部类其他类中 如何 直接访问static内部类的非静态成员
new Outer.Inner().function();
在外部类其他类中 如何 直接访问static内部类的静态成员
注意:
当内部类定义了静态变量时 该内部类必须是static的;
当外部类的静态方法访问内部类时 内部类也必须是static的。
 
 
  Outer.Inner().function();
class Outer
private int x=3
class Inner//内部类
viod function(){
System.out.println("inner :"+Outer.this.x);
 
}
}
}
class  Innter2{
void show()
{System.out.println("Inner2 show");
}
}
public static void method(){
Inner.funcation
}
 
 
class InnerClassDemo2
{public static void main(String args[]){
Outer out=new Outer();
out.method();
}
}
 
 
----------------------------------------------------
 
内部类定义在局部时,
1.不可以被成员修饰符修饰
2.可以直接访问外部类中的成员,因为还持有外部类中的引用。
但是不可以访问它所在的局部中的变量,只能访问被final修饰的局部变量
class Outer{
int x=3;
void method(final int a){
class Inner{
void function(){
System.out.println(y)};
}
new Inner().function();
}}
class InnerClassDemo3{
public static void main(String[] args)
{new Outer().method();
out.method(6);
out.method(7);
}}
-----------------------------------------
匿名内部类:
1.匿名内部类其实就是内部类的简写格式。
2.定义匿名内部类的前提
内部类必须是继承一个类或者实现一个接口。
3.匿名内部类的格式:
new 父类或是接口(){定义子类的内容}
4.其实 匿名内部类就是一个匿名子类对象,也可以理解为带内容的对象。
5.匿名内部类中定义的方法最好不要超过3个
class AbsDemo{
abstract void show();
}
 
 
 
 
class Outer{
int x=3
class Inner extends AbsDemo{
void show()
{System.out.println("show:"+x)
}}
public void funcation(){
new Inner().show()}
}}
class InterClass
{
public static void main(String[] args)
 
{System.out.println("")}}
 
 
 
 
 
 
posted @ 2014-09-07 00:02  大成哥  阅读(109)  评论(0编辑  收藏  举报