天耀18期 -08.面向对象-上转型【作业】

来源:互联网 发布:海安东华软件招聘 编辑:程序博客网 时间:2024/06/01 08:28

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();


}


}