java语法中的多态机制[只是基础语法,多态作用在后续讲解]
1:Animal、cat、Bird三个类的关系: Cat继承Animal Bird继承animal cat和Bird没有继承关系 2:面你对对象三大特征:封装,继承,多态 3:关于多态中涉及到的几个概念: Ⅰ 向上转型, 子类型-》转化为父类型 又被称为:自动转化类型 Ⅱ 向下转型 父类型到子类型 又被称为:强制转换类型【需要加强制转换类型符】 需要记忆:无论向上还是向下都需要有继承关系
Animal类
package com.beijing.javse.test01;
public class Animal {
public void move(){
System.out.println("动物在移动");
}
}
Cat类
package com.beijing.javse.test01;
public class Cat extends Animal {
public void move(){
System.out.println("猫在走猫步");
}
public void catchMouse(){
System.out.println("猫抓老鼠");
}
}
Bird类
package com.beijing.javse.test01;
public class Bird extends Animal{
public void move(){
System.out.println("鸟儿在飞翔");
}
public void fly(){
System.out.println("bird fly");
}
}
Test类
package com.beijing.javse.test01;
import java.util.concurrent.Callable;
public class Test {
public static void main(String[] args) {
Animal a1=new Animal();
a1.move();
Cat c1=new Cat();
c1.move();
Bird b1=new Bird();
b1.move();
Animal a2=new Cat();
a2.move();
Cat c2=(Cat)a2;
c2.catchMouse();
Animal a3=new Bird();
if(a3 instanceof Cat){
Cat c3=(Cat)a3;
c3.catchMouse();
}else
if(a3 instanceof Bird){
Bird b2=(Bird)a3;
b2.fly();
}
}
}
Test02类
package com.beijing.javse.test01;
public class Test02 {
public static void main(String[] args) {
Animal a1 = new Cat();
Animal a2 = new Bird();
if (a1 instanceof Cat) {
Cat c1 = (Cat)a1;
}
if(a2 instanceof Bird){
Bird b1=(Bird)a2;
}
}
}
多态的作用
Cat类
package com.beijing.javase;
public class Cat {
public void eat(){
System.out.println("小猫正在吃鱼");
}
}
Master类
package com.beijing.javase;
public class Master {
public void feed(Pet pet){
pet.eat();
}
}
Pet类
package com.beijing.javase;
public class Pet {
public void eat(){
}
}
Dog类
package com.beijing.javase;
public class Dog {
public void feed(){
System.out.println("小狗吃骨头");
}
}
Test类
package com.beijing.javase;
import java.util.concurrent.Callable;
public class Test {
public static void main(String[] args) {
Master zhangsan=new Master();
Cat tom=new Cat();
zhangsan.feed(tom);
Dog erha=new Dog();
zhangsan.feed(erha);
}
}
|