package ploymorphism;
public class AnimalDemo {
public static void main(String[] args) {
//父类的引用变量可以引用其子类对象
Animal ani1= new Dog("旺旺");
ani1.eat();
Animal ani2 = new Cat("招福猫");
ani2.eat();
}
}
class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
// 这是一个通用方法,由子类去实现
public void eat() {
}
}
class Dog extends Animal {
public Dog(String name) {
super(name);
}
@Override
// 对父类的方法进行重写
public void eat() {
System.out.println("爱吃骨头的汪");
}
}
class Cat extends Animal {
public Cat(String name) {
super(name);
}
// 对父类的方法进行重写
public void eat() {
System.out.println("爱吃罐头的喵");
}
}
结果是:package ploymorphism;
//定义兵器的父类 Sword
public class SwordDemo {
public static void main(String[] args) {
// 类的向上转换:在需要父类对象的时候,用子类对象来代替
// 1.定义一个普通的Sword对象
Sword s1;
// 创建一个Sword对象 s1---是一把普通的剑
s1 = new Sword();
s1.killPerson();
// 创建一个SuperSword的对象 s2---是一把倚天剑
s1 = new SuperSword();
s1.killPerson();
// s1.killBoss();错误 只保留父类中所定义的属性和行为
// 类的向下转换
// 4.定义一个SuperSword对象
Sword s3 = new SuperSword();
s3.killPerson();
Sword s9 = new SuperSword();
SuperSword ss9 = (SuperSword) s9;
ss9.killBoss();
ss9.killPerson();
// 创建一个Sword
// s2 = (SuperSword)new Sword(); // 需要强制!(⊙﹏⊙)
// Type mismatch 类型不匹配: cannot convert from Sword to SuperSword
}
}
class Sword {
String name;
int power; // 攻击力
// 定义杀人的方法
public void killPerson() {
System.out.println("通用剑杀土匪,扣100点血!");
}
}
// 定义 子类 倚天剑 SuperSword
class SuperSword extends Sword {
// 重写killPerson方法
@Override
public void killPerson() {
// ……
System.out.println("倚天剑出世,扣10W点血( ̄▽ ̄)");
}
// 定义 杀大Boss的方法
public void killBoss() {
System.out.println("除暴安良!");
}
}
结果是: