您的位置:首页 > 其它

内部类

2014-10-09 22:27 92 查看
------- android培训java培训、期待与您交流! ----------

package cn.object.innerclass;

/**
* @author tom
*内部类的访问规则:  (很少被public)
*1:内部类可以直接访问外部类的中的成员,包括私有。
*	 	之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式:外部类名.this
*2:外部类要访问内部类,必需建立内部类对象
*
*访问格式:
*1:当内部类定义在外部类的成员位置上,而且非私有,可以在外部其他类中可以直接建立内部类对象
*格式  ::::外部类名.内部类名  变量名=外部类对象.内部类对象
*
*2:当内部类在成员位置上,就可以被成员修饰符所修饰
*		比如,private:将内部类在外部类中进行封装
*			statuc :内部类就具备了静态的特性
*			当内部类被static修饰后,只能直接访问外部类中的static成员,出现访问局限
*
*
*	在外部其他类中,如何直接访问静态内部类的非静态成员呢-------Outer.Inner.function()?
*
*
*注意:当内部类中定义静态成员,该内部类必需是static的
*		当外部类中的静态方法访问内部类时,内部类也必需是static的
*/

////////////
/*
* 什么时候使用内部类?
* 当描述事务时,事物的内部还有事务,钙食物用内部类来描述,因为内部事务在使用外部失误的内容
* 例子:比如人  和  人体的心脏,心脏我就可以定义为内部类,可以设为私有,因为心脏在人的内部,
* 			他又具体的事务,他也不是谁都可以访问的,可以设为私有,然后用其他方法对外界公开*/

public class InnerClassDemo {
public static void main(String [] args){

Outer out=new Outer();
out.method();
//直接访问内部类中的成员(很少这么访问)
//Outer.Inner i=new Outer().new Inner();
//	i.function();
}
}

class Outer{
private int x=3;
public void method(){
Inner i=new Inner();
i.function();
}
class Inner{  //在java中只有内部类能用private修饰
int x=4;
public void function(){
// 	method();
int x=6;
System.out.println("内部类方法的X="+x);
System.out.println("内部类中的x="+this.x);		//当这个function()是静态的时候他会出错
System.out.println("外部类中的x="+Outer.this.x);	//当这个内部类static的时候他会出错
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: