⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 j02080503.java

📁 经典java教材《java完美经典》一书中源码的完全收集
💻 JAVA
字号:
import java.lang.*;

class j02080503
{	
  public static void main(String[] para)
  {		   	
    B obj1 = new B();
    System.out.println("======= B 类之 super ======="); 
    obj1.showBSuper();  //B 定义之方法中 super ==> A 
    System.out.println("======= B 类之 this ======="); 
    obj1.showBThis();   //B 定义之方法中 this ==> B
    		 		
    C obj2 = new C();  	
    System.out.println("======= C 类之 super ======="); 
    obj2.showCSuper();  // C 定义之方法中 super ==> B	 	
    System.out.println("======= C 类之 this =======");  	
    obj2.showCThis();   // C 定义之方法中 this ==> C   
    
     	
    //以下叙述句的结果,读者有兴趣可取消批注
    /*  
    System.out.println("==== C 类对象之 showBSuper()====");  
    obj2.showBSuper();  // B 定义之方法中 super ==> A ,super 之方法不会系结到子类去,仍系结到 A 之 this 使用的方法
                                                       //成员变量是 A 之 this 使用的成员变量,  	  	
    System.out.println("==== C 类对象之 showBThis()====");  
    obj2.showBThis();   // B 定义之方法中 this ==> B,成员变量是 B 之 this 使用的成员变量,
                                                    //但方法已经系结到 C 之 this 使用的方法
    */
    
    /*
    System.out.println("*************** 以对象只能使用到 this 的成员 ****************");  	
    System.out.println("======= B 类之 this ======="); 
    System.out.println("obj1.Var1 = " + obj1.Var1);
    System.out.println("obj1.Var2 = " + obj1.Var2);
    System.out.println("obj1.Var3 = " + obj1.Var3);
    obj1.Fun1();
    obj1.Fun2();  	
    System.out.println("======= C 类之 this ======="); 
    System.out.println("obj2.Var1 = " + obj2.Var1);
    System.out.println("obj2.Var2 = " + obj2.Var2);
    System.out.println("obj2.Var3 = " + obj2.Var3);
    System.out.println("obj2.Var4 = " + obj2.Var4);
    System.out.println("obj2.Var5 = " + obj2.Var5);  	
    obj2.Fun1();
    obj2.Fun2();
    */
  }
}

class A
{
	public int Var1 = 1000;
	public int Var2 = 2000;
	public int Var3 = 3000;
	
	public void Fun1()
	{
		System.out.println("AAAA ==== Fun1() in A class");
	}
	
	public void Fun2()
	{
		System.out.println("AAAA ==== Fun2() in A class");
	}	
}

class B extends A
{	
	public float Var2 = 22.22F;  //Hide 继承来的 Var2
	public float Var3 = 33.33F;  //Hide 继承来的 Var3
	public float Var4 = super.Var2 + 400;  //新增,仅为示范而作,尽量将初始化写于构造子之内;
	public float Var5 = super.Var2 + 500;  //新增,super ==> A
/*
	static 
	{
		Var3 = super.Var2 + 200;   //error,证明 super 不是 static
	}
*/
	public void Fun2()
	{
		System.out.println("BBBB ==== Fun2() in B class");
	}	
	
	public void showBThis()
	{
		System.out.println("Var1 = " + Var1
		                   + "  Var2 = " + Var2
		                   + "  Var3 = " + Var3);
		Fun1();
		Fun2();	
	}
	
	public void showBSuper()
	{
		System.out.println("super.Var1 = " + super.Var1
		                    + "  super.Var2 = " + super.Var2
		                    + "  super.Var3 = " + super.Var3);
		//System.out.println("super.Var4 = " + super.Var4); //错误,B 类没有 Var4 成员变量
		super.Fun1();
		super.Fun2();	
	}
	
	/* //从A 继承而来,不 Hide 或 Override 的成员
	public int Var1 = 1000;
	public void Fun1()
	{
		System.out.println("AAAA ==== Fun1() in A class");
	}		  
	*/	
}

class C extends B
{
/* //===============================================================================   
  //从 B(间接向A) 继承而来,且不 Hide 或 Override 的成员
	public int Var1 = 1000;
	//===========================================
	public float Var3 = 33.33F;
	public float Var5 = super.Var2 + 500;
	                  //因 Var5 定义于 B ,而 super.Var2 指的是 A 的 Var2
	public void Fun2()
	public void showBThis()
	public void showBSuper()
	//======================================================================================
*/	
	
	public String Var2 = "AAAA";  //Hide 继承来的 Var2
	public String Var4 = "BBBB";  //Hide 继承来的 Var4
	
	public void Fun1()
	{
		System.out.println("CCCC ==== Fun1() in C class");
	}
	
	public void showCThis()
	{
		System.out.println("Var1 = " + Var1
		                    + "  Var2 = " + Var2
		                    + "  Var3 = " + Var3
		                    + "  Var4 = " + Var4
		                    + "  Var5 = " + Var5);		
		Fun1();
		Fun2();
	}
	
	public void showCSuper()
	{
		System.out.println("super.Var1 = " + super.Var1
		                    + "  super.Var2 = " + super.Var2
		                    + "  super.Var3 = " + super.Var3
		                    + "  super.Var4 = " + super.Var4
		                    + "  super.Var5 = " + super.Var5);
		super.Fun1();
		super.Fun2();		
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -