day12作业-----------------Java面向对象--JavaObject02-3

作业

1. 结合多态发生的条件,及继承相关知识,自己总结并验证下,哪些方法无法实现多态效果。

2. 自己定义一个类,类中定义3个成员变量,这3个成员变量都被final修饰,
请用3种不同方式,为这3个被final修饰的成员变量赋值。

3. 实现如下多态案例,分别定义Person类,SouthPerson(表示南方人),NorthPerson(表示北方人)

Person
eat()

SouthPerson
eat()

NorthPerson
eat()

写代码实现,eat方法的多态效果

1:人要吃饭
2:南方人吃炒菜和米饭
3:北方人吃烩菜和馒头

 

参考答案:

1.

 1 package com.day012;
 2 /*
 3  * 1.  结合多态发生的条件,及继承相关知识,自己总结并验证下,哪些方法无法实现多态效果。
 4  
 5  答案:
 6  1. 考虑到多态发生的条件是,
 7    1.继承
 8    2.方法覆盖
 9    3.父类引用指向子类实例
10 所以哪些方法(行为),实现不了多态效果呢?不能在子类中被覆盖的方法
11 a. 父类中的private方法(不能被子类覆盖)
12 b. 父类中的构造方法(不能被子类继承)
13 c. 父类中的静态方法(不能被子类覆盖)
14 d. 父类中被final修饰的方法(不能被子类覆盖)
15 
16  
17  */
18 public class Demo1 {
19 
20 }

2.

 

 

 1 package com.day012;
 2 /*
 3  * 2. 自己定义一个类,类中定义3个成员变量,这3个成员变量都被final修饰,
 4    请用3种不同方式,为这3个被final修饰的成员变量赋值。
 5 
 6  */
 7 public class Demo2 {
 8     public static void main(String[] args) {
 9         A nameA = new A();
10         System.out.println("a = "+nameA.a );
11         System.out.println("b = "+nameA.b );
12         System.out.println("c = "+nameA.c );
13     }
14 }
15 class A{
16     //1.在类体中定义成员变量时为 a 赋值(初始化语句)
17     final int a = 1;
18     final int b;
19     final int c;
20     //2.在构造代码块中为 b 赋值
21     {
22         b = 2;
23     }
24     //3.在构造方法中为 c 赋值。注意:要在所有的构造方法中都为 c 赋值。
25     public A() {
26         this.c = 3;
27     }
28 }

运行结果:

 

 

3.

 

 

 

 

 1 package com.day012;
 2 /*
 3  * 3. 实现如下多态案例,分别定义Person类,SouthPerson(表示南方人),NorthPerson(表示北方人)
 4 Person
 5   eat()
 6 
 7 SouthPerson
 8    eat()
 9 
10 NorthPerson
11    eat()
12 
13 写代码实现,eat方法的多态效果
14 1:人要吃饭
15 2:南方人吃炒菜和米饭
16 3:北方人吃烩菜和馒头
17  */
18 public class Demo3 {
19     public static void main(String[] args) {
20         Person person = new Person();
21         polymorphism(person);//1:人要吃饭
22         person = new SouthPerson();
23         polymorphism(person);//2:南方人吃炒菜和米饭
24         person = new NorthPerson();
25         polymorphism(person);//3:北方人吃烩菜和馒头
26     }
27     
28     public static void polymorphism(Person person) {
29         person.eat();
30     }
31 }
32 
33 class Person{
34     public void eat() {
35         System.out.println("1:人要吃饭");
36     }
37 }
38 //南方人
39 class SouthPerson extends Person{
40     public void eat() {
41         System.out.println("2:南方人吃炒菜和米饭");
42     }
43 }
44 //北方人
45 class NorthPerson extends Person{
46     public void eat() {
47         System.out.println("3:北方人吃烩菜和馒头");
48     }
49 }

运行结果:

 

posted @ 2020-04-19 16:10  dust--  阅读(424)  评论(0编辑  收藏  举报