多态__概念
所谓多态,就是指一个引用(类型)在不同的情况下的多种状态,
你也可以理解为,多态是指通过指向父类的指针,来调用在不同子类中实现的方法。
class Animal{
String name;
int age;
//动物会叫
public void cry(){
System.out.println("不知道怎么叫");
}
}
class Cat extends Animal{
public void cry(){
System.out.println("喵喵叫");
}
}
class Dog1 extends Animal{
public void cry(){
System.out.println("汪汪叫");
}
}
/**
* @author 菊丿外人
*功能:演示多态
*/
public class Test{
public static void main(String[] args) {
/*未用到多态
Cat cat1= new Cat();
cat1.cry();
Dog1 dog1 = new Dog1();
dog1.cry();
*/
//多态
Animal an = new Cat();
an.cry();
an=new Dog1();
an.cry();
}
}
深入讨论
class Animal{
String name;
int age;
//动物会叫
public void cry(){
System.out.println("不知道怎么叫");
}
//吃东西
public void eat(){
}
}
class Food{
String name;
public void showName(){
}
}
//主人类
class Master{
//给动物喂食物,使用多态,方法就可以用一个
public void feed(Animal an, Food f){
an.eat();
f.showName();
}
}
class Fish extends Food{
public void showName(){
System.out.println("鱼");
}
}
class Bone extends Food{
public void showName(){
System.out.println("骨头");
}
}
class Cat extends Animal{
public void cry(){
System.out.println("喵喵叫");
}
public void eat(){
System.out.println("猫爱吃鱼");
}
}
class Dog1 extends Animal{
public void cry(){
System.out.println("汪汪叫");
}
public void eat(){
System.out.println("狗喜欢吃骨头");
}
}
/**
* @author 菊丿外人
*功能:演示多态
*/
public class Test{
public static void main(String[] args) {
//多态
Animal an = new Cat();
an.eat();
Master Master1=new Master();
Master1.feed(new Dog1(),new Bone());
}
}
多态__注意事项
1、java允许父类的引用变量引用他的子类的实例(对象)
Anmial animal = new Cat();
这种转换时自动完成的。
2、关于类型转换还有一些具体的细节要求,