Java——多态
不止Java
共 3110字,需浏览 7分钟
·
2021-06-27 22:13
目录
概述
/*
动物类(父类)
*/
public class Animal {
public void eat(){
System.out.println("动物吃什么");
}
}
/*
猫类(子类)
*/
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
/*
测试类
*/
public class AnimalDemo {
public static void main(String[] args){
//父类引用指向子类对象
Animal a = new Cat();
}
}
成员访问特点
/*
动物类(父类)
*/
public class Animal {
public int age = 20;
public void eat() {
System.out.println("动物吃什么");
}
}
/*
猫类(子类)
*/
public class Cat extends Animal {
public int age = 2;
public int weight = 10;
@Override
public void eat() {
System.out.println("猫吃鱼");
}
public void playGame() {
System.out.println("猫捉老鼠");
}
}
/*
测试类
*/
public class AnimalDemo {
public static void main(String[] args) {
//父类引用指向子类对象
Animal a = new Cat();
System.out.println(a.age);
//System.out.println(a.weight);
System.out.println("------");
a.eat();
//a.playGame();
}
}
优缺点
/*
动物类(父类)
*/
public class Animal {
public void eat() {
System.out.println("动物吃什么");
}
}
/*
猫类(子类)
*/
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
}
/*
小狗类(子类)
*/
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("狗吃骨头");
}
public void lookDog() {
System.out.println("狗看门");
}
}
/*
动物操作类
*/
public class AnimalOperator {
public void useAnimal(Animal a) {
a.eat();
// a.lookDog();//不能使用子类的特有功能
}
/*
public void useAnimal(Cat c) {
c.eat();
}
public void useAnimal(Dog d) {
d.eat();
}
*/
}
/*
测试类
*/
public class AnimalDemo {
public static void main(String[] args) {
AnimalOperator ao = new AnimalOperator();
Cat c = new Cat();
ao.useAnimal(c);
Dog d = new Dog();
ao.useAnimal(d);
}
}
多态中的转型
向上转型
从子类到父类,父类引用指向子类对象
向下转型
从父类到子类,父引用转为子类对象
/*
动物类(父类)
*/
public class Animal {
public void eat() {
System.out.println("动物吃什么");
}
}
/*
猫类(子类)
*/
public class Cat extends Animal {
@Override
public void eat() {
System.out.println("猫吃鱼");
}
public void playGame() {
System.out.println("猫捉老鼠");
}
}
/*
测试类
*/
public class AnimalDemo {
public static void main(String[] args) {
//父类引用指向子类对象
//向上转型
Animal a = new Cat();
a.eat();
System.out.println("------");
//向下转型
Cat c = (Cat) a;
c.eat();
c.playGame();
}
}
评论