天耀18期 -08.面向對象-上轉型【作業】

1.   上轉型對象的定義是什麼?闡述自己對上轉型對象的理解,用文字描述。

上轉型:父類聲明,子類實例化叫做上轉型。

(自己的理解)上轉型對象可以利用父類中的全員變量和方法,當子類進行全員變量隱藏或方法重寫時,則用的是子類中的。上轉型對象不能用子類新增加的方法或變量。(強制轉換)

u PPT的說法)1.上轉對象不能操作子類新增的成員變量,失掉了這部分屬性,不能使用子類新增的方法,失掉了一些功能。

u 2.上轉型對象可以操作子類繼承的成員變量,也可以使用子類繼承的或重寫的方法。

u 3.如果子類重寫了父類的某個方法後,當對象的上轉型對象調用這個方法時一定是調用了子類重寫的方法。因爲程序在運行時知道,這個上轉對象的實例是子類創建的,只不過損失了一些功能而已。

 

 

 

 

 

2. 多選題:

1)下列關於父類與子類的說法錯誤的有(    BCD

A.在任何情況下,子類對象都可以訪問父類的受保護方法。

B.上轉型對象調用的是父類中的方法。

C.子類對象不能直接調用被子類重寫的父類中的方法。

D.上轉型對象可以調用子類新增的方法。

 

2.   創建一個抽象類水果Fruit,再分別創建ApplePearOrange類繼承抽象類水果,分別在3個子類中定義成員變量和方法,然後再創建一個測試類Test,根據用戶的輸入,利用上轉型對象分別實例化不同的子類,表現多態的性質。

3.  package Homework09_java;

4.  /**

5.   * 創建一個水果類做對象

6.   * @author LENOVO

7.   *

8.   */

9.  public class Fruit {

10. String color="橙色";

11. String size;

12. String name;

13.

14. public void name()

15. {System.out.println(this.name+" ");}

16. public void eating()

17. {System.out.println("直接吃 ");}

18. public void juice()

19. {System.out.println("做果汁 ");

20. }

21.  

22.  

23. }

24. package Homework09_java;

25. //創建一個蘋果類

26. public class Apple extends Fruit {

27. String name="蘋果";

28. String size="圓形";

29. String color="紅色";

30.

31.

32. public void eating()

33. {System.out.println("削皮吃");}

34.

35.  

36. }

37. package Homework09_java;

38. //創建一個梨類

39. public class Pear extends Fruit  {

40. String name="";

41. String color="黃色";

42. String size="梨形";

43. public void eating()

44. {

45.      System.out.println("洗洗吃");

46.     

47.     

48. }

49.  

50.  

51. }

52. package Homework09_java;

53. //創建一個橘子類

54. public class Orange extends Fruit{

55. String name="橘子";

56. String size="圓形";

57.

58.  public void eating()

59. {System.out.println("剝皮吃");}

60.  public void eating(Fruit a)

61.  {a.eating();}

62.  public void juice(Fruit a)

63.  {a.juice();}

64.  public void color(Fruit a)

65.  {System.out.println(""+a.color);}

66.  public void size(Fruit a)

67.  {System.out.println(""+a.size);}

68.  

69. }

70. package Homework09_java;

71. import java.util.Scanner;

72. public class Test {

73. public static void main(String[] args)

74. {Scanner scanner=new Scanner(System.in);

75.      System.out.println("請輸入一種水果");

76.      String name1=scanner.next();

77.      Test test=new Test();

78.      Fruit apple=new Apple();

79.      Fruit pear=new Pear();

80.      Fruit orange=new Orange();

81.      String fruit_01="蘋果";

82.      String fruit_02="";

83.      String fruit_03="橘子";

84.      if(name1.equals(fruit_01))

85.      {test.color(apple);

86.      {test.size(apple);

87.      {test.juice(apple);

88.      test.eating(apple);

89.         

90.      if(name1.equals(fruit_02))

91.      {test.color(pear);

92.      {test.size(pear);

93.      {test.juice(pear);

94.      test.eating(pear);

95.     

96.      if(name1.equals(fruit_03))

97.      {test.color(orange);

98.      {test.size(orange);

99.      {test.juice(orange);

100.              test.eating(orange);

101.             

102.              }

103.             

104.             

105.             

106.              }

107.             

108.             

109.             

110.             

111.          }

112.      }

(上程序有問題,請求救援!!)

4. 猜數字遊戲。隨機產生一個1—100的整數,讓用戶去猜,猜大了(或者猜小了)都有提示;直到用戶猜對,提示成功,程序結束。

package Homework09_java;

import java.util.Scanner;

import java.util.Random;

public class GuessNumber {

    public static void main(String[] args)

    {Random rand=new Random();

    int number=rand.nextInt(100);

       

       

        Scanner scanner=new Scanner(System.in);

        System.out.println("請輸入一個值:");

        while(true)

        {int data=scanner.nextInt();

        //用戶輸入的值

            if (data>number)

            {System.out.println("大了,請繼續輸入");

            continue;}

            if (data<number)

            {System.out.println("小了,請繼續輸入");

            continue;}

           

            if (data==number)

            {System.out.println("成功");

            break;}

           

               

           

           

           

        }

   

       

       

    }

   

   

   

 

}

 

5. 一個正整數,如果恰好等於除它本身外的所有因子之和,這個數就稱爲完數

例如6=123,編程找出1000以內的所有完數。

package Homework09_java;

 

public class Wanshu

{   void wanshu ()

    {   int i,j,s=0;

        for (i=1;i<=1000;i++)

            {for (j=1;j<i;j++)

                    {if (i%j==0)

                        {s+=j;}

                   

           

                    if (s==i)

                    System.out.println(i+"\t");

                    }                                                                                                                                                          

            }

           

       

    }

 

}

package Homework09_java;

 

public class Main {

    public static void main(String[] args)

    {Wanshu ws=new Wanshu();

    ws.wanshu();

       

       

    }

 

}

 

6. 輸出所有水仙花數(如果一個3位正整數的各個位數立方和等於這個數本身,稱爲水仙花數)。

package Homework09_java01;

public class DaffodilNumber {

public void main()

{int num,i,a,b,c;
for (i=100;i<1000;i++)
{num=i;
a=num%10;
num=num/10;

b=num%10;
num=num/10;

c=num%10;
if ((a*a*a+b*b*b+c*c*c)==i)
{
System.out.println(i  );
}


}


}

}

package Homework09_java01;

public class Main {
public static void main(String [] args)
{DaffodilNumber dn=new DaffodilNumber();
dn.main();


}


}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章