📄 testjava.java
字号:
/***
* 多态思想
* 首先知道三要素
* 1,继承 2,重写 3,父类对象指向子类对象
*
* 理解多态的优势。
* 我们要设计一些动物前,先设计动物的基本类
* 如Animal.我们设计好他的名字。和统一的叫声这个方法函数。
* 其次,我们开始单独设计每一种动物的特征
* 先设计Cat猫,他继承了动物的特征后,我们对猫的叫声重写一下。
* 注意重写 必须和父类方法一样。
* 同样,我们又写了狗Dog,bird鸟这两个方法,同时重写了他们的叫声。
*
* 这个时候,我们设计一个小女孩的类Lady。 我们开始设计她的名字,和她将使用的一个
* 对象 动物。
* 我们定义了她的构造方法,里面的参数有名字,和定义的动物对象。
* 同时,我们对他定义了一个方法,并且实现了调用该方法就可实现调用动物的这个叫声。
*
* 我们在主函数里面建立了 Cat Dog 和Lady等实现类。
* 当我们调用Lady中调用哪个 动物类的时候,程序会自动找到与其对应的动物的实现方法。
* 这个就叫 多态。
* @author Administrator
*abstract 抽象
*抽象方法必须定义抽象类
*抽象方法只要定义不要实现
*抽象类不能被实力化
*子类抽象类必须被继承,子类抽象方法必须被重写
*/
abstract class Animal {//定义抽象类
private String name;
Animal(String name) {this.name = name;}
/*
public void enjoy(){
System.out.println("叫声......");
}
*/
public abstract void enjoy();//定义抽象方法,也叫纯虚函数
}
class Cat extends Animal {
private String eyesColor;
Cat(String n,String c)
{super(n); eyesColor = c;}
public void enjoy() {
System.out.println("猫叫声......");
}
//public abstract void enjoy();
}
class Dog extends Animal {
private String furColor;
Dog(String n,String c) {super(n); furColor = c;}
public void enjoy() {
System.out.println("狗叫声......");
}
}
class Bird extends Animal {
Bird() {
super("bird");
}
public void enjoy() {
System.out.println("鸟叫声......");
}
}
class Lady {
private String name;
private Animal pet;//定义了动物的类 对象
Lady(String name,Animal pet) {//由于pet是动物的对象。而Cat Dog等也是从动物继承而来的
//所以,调用哪种动物,pet就自动传到哪个动物的类上
this.name = name; this.pet = pet;
}
public void myPetEnjoy(){pet.enjoy();}//自动识别方法的过程就叫多态
}
public class Testjava {
public static void main(String args[]){
Cat c = new Cat("catname","blue");
Dog d = new Dog("dogname","black");
Bird b = new Bird();
Lady l1 = new Lady("l1",c);
Lady l2 = new Lady("l2",d);
Lady l3 = new Lady("l3",b);
l1.myPetEnjoy();
l2.myPetEnjoy();
l3.myPetEnjoy();
//多态的好处在于,我们要增加不同的类或动物类型,那么,无需改动动物的大类。
//只要增加要的类,在主函数中调用就可以了。
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -