-
结合多态发生的条件,及继承相关知识,自己总结并验证下,哪些方法无法实现多态效果。
多态发生的条件:- 继承
- 方法覆盖
- 父类引用指向子类实例(对象)
哪些成员不能被继承:
1、修饰符:static修饰的方法不能被继承覆盖
2、修饰符:final修饰的方法不能被重写(覆盖)
3、权限修饰符:private修饰的方法不能被继承覆盖
4、父类中的构造方法不能被继承
-
自己定义一个类,类中定义3个成员变量,这3个成员变量都被final修饰,
请用3种不同方式,为这3个被final修饰的成员变量赋值。
package com.homework.homework0721;
/**
* @Author kinmon
* @Date 2020/7/21 20:02
* @Version 1.0
*/
public class Problem2 {
public static void main(String[] args) {
Cat cat = new Cat("黄",1,false);
System.out.println(cat.getColor() + "色-" + cat.getAge() + "岁-" + (cat.isMale() ? "雄性" : "雌性"));
}
}
class Cat{
final private String color;
final private int age;
final private boolean isMale;
public String getColor() { return color; }
public int getAge() { return age; }
public boolean isMale() { return isMale; }
//第1种:手动赋初值 (也可结合get/set方法进行赋值)
// final String color = "yellow";
// final int age = 1;
// final boolean isMale = false;
//第2种:构造代码块
// {
// color = "yellow";
// age = 1;
// isMale = false;
// }
//第3种:构造方法
public Cat(String color, int age, boolean isMale) {
this.color = color;
this.age = age;
this.isMale = isMale;
}
}
- 实现如下多态案例,分别定义Person类,SouthPerson(表示南方人),NorthPerson(表示北方人)
Person
eat()
SouthPerson
eat()
NorthPerson
eat()
写代码实现,eat方法的多态效果
1:人要吃饭
2:南方人吃炒菜和米饭
3:北方人吃烩菜和馒头
package com.homework.homework0721;
/**
* @Author kinmon
* @Date 2020/7/21 19:49
* @Version 1.0
*/
public class Problem3 {
public static void main(String[] args) {
Person person ;
person = new Person();
dine(person);
person = new SouthPerson();
dine(person);
person = new NorthPerson();
dine(person);
}
public static void dine( Person person) {
//吃饭//多态
person.eat();
}
}
//人
class Person {
public void eat() {
System.out.println("人要吃饭");
}
}
//南方人
class SouthPerson extends Person {
@Override
public void eat(){
System.out.println("南方人吃炒菜和米饭");
}
}
//北方人
class NorthPerson extends Person {
@Override
public void eat(){
System.out.println("北方人吃烩菜和馒头");
}
}