//关于类中传递实例的问题,想不明白,为什么会这样.
public   class   aa 
 { 
 	int   num=99; 
 	void   jj(aa   f) 
 	{ 
 		System.out.println(f.num); 
 		System.out.println(f.getClass().getName()); 
 		System.out.println(f.sex);//注释 
 	}   
 } 
 class   bb   extends   aa 
 {	String   sex= "男 "; 
 	bb() 
 	{ 
 		num=88; 
 	} 
 	public   static   void   main(String   args[]) 
 	{ 
 		bb   b=new   bb(); 
 		aa   a=new   aa(); 
 		a.jj(b); 
 	} 
 }   
 如果不把带有//注释的那一行注释掉的话,会提示找不到变量sex 
 但是我传递的是bb类的实例啊?而且bb类实例中有sex这个变量啊? 
 这时程序到底是怎么执行的啊?我真的晕了. 
------解决方案--------------------因为sex是子类bb的属性,父类aa没有sex这个属性。所以会报错 
 子类能继承父类的属性和方法(private除外)
------解决方案--------------------我刚刚就看了你的一个问题,呵呵,记得好象有点相似. 
   void jj(aa f)需要一个aa的REFERENCE作为参数,但是它也可以接受任何由AA派生来得的REFERENCE.当把BB的引用传递给函数接口时向上转型就发生了.这是完全可以的---因为BB继承了AA,但BB的REFERENCE向上转型时它自身的接口会变小,String sex= "男 ";当然也就无法访问了 
------解决方案--------------------这是个向上类型转换的问题,我正好想过并实验过这个问题.   
 当把子类的句炳赋给父类后比如f=ch后, 代码上f指向的是Child,但是实际是进行了类型转换,把ch的非Father部分截断,只剩下Father类型里的东西,所以 
    System.out.println(f.sex);//注释 
 就会出错.     
 向上类型转换(upcasting)  
      从面向对象的概念上来说就是 一个子类对象同时也是一个父类对象,举例说男人也是人(当然,女人也是人), 
      从java语法的角度来说可以描述为子类的句柄可以赋给父类的句柄: 
          Child ch=new Child; 
          Father f=ch; 
      但是反过不能把父类的句柄赋给子类的句柄     
------解决方案--------------------因为对编译器来说,它只分析程序语法,它只知道变量f的引用类型是类AA,而类AA又没有sex这个属性,所以,编译无法通过。   
 你可以这样写: 
 class AA 
 { 
 	int num=99; 
 	void jj(AA f) 
 	{ 
 		/* 
 		System.out.println(f.num); 
 		System.out.println(f.getClass().getName()); 
 		System.out.println(f.sex);//注释 
 		*/ 
 		if(f instanceof BB){ 
 			BB b=(BB)f; 
 			System.out.println(b.num); 
 			System.out.println(b.getClass().getName()); 
 			System.out.println(b.sex);	 
 		} 
 	}   
 } 
 public class BB extends AA 
 { 
 	String sex= "男 ";	 
 	BB() 
 	{ 
 		num=88; 
 	} 
 	public static void main(String args[]) 
 	{ 
 		BB b=new BB(); 
 		AA a=new AA(); 
 	a.jj(b); 
 	} 
 } 
------解决方案--------------------你的f函数就相当于是: 
 void jj(bb f) 
 { 
 aa f1=(aa)f;//f经过强制转换 变为超类引用,丢失 sex	 
 System.out.println(f1.num); 
 System.out.println(f1.getClass().getName()); 
 System.out.println(f1.sex);//注释 
 } 
------解决方案--------------------你要调用BB 就应该重写aa里边的方法了。否则  输出是aa类的输出,里边没有的属性肯定出不来的