【1.1 多态的体现】
-
多态的好处:提高了扩展性(提高代码的共用性);
1.定义:某一类事物的多种存在形态:
java语言中含有【方法重载】和【对象多态】两种形式的多态
猫 x = new 猫()
动物 x = new 猫()//new 猫()
来了一只真实的小猫 我说 这动物不错,
new 的这个实体既具备猫的类型,也具备动物的类型
但是有个前提,猫必须是动物的一种;
2.当类与类产生关系:
那么这个实体还具备其他类型,这个事物存在多种形态-->多态;
多态我们强调的是在java中,对象上的体现;
3.其实函数也具备多态性,重载,同一个名字,体现形态不一样
(方法的重载也是多态的一种);
- + -
api里面所有的类和接口关系都是
以面向对象的几大特征为开发基准的,不了解的话连api都看不到;
//这叫前期预先调用功能,后期定义子类去实现功能,并把子类作为参数,传递进来,实现了后期拓展性
-
public static void main(String[] args) {
Animal a1 =new Dog();//继承了动物,都是动物的一种,即是猫也是动物
Animal a2 =new Cat();
test(a1);//3.方法名,将对象a1传入
test(a2);//传入什么对象输出什么方法
Animal a3 =new Pig();//因为继承了父类,所以不用写重载方法,用回引用Animal的重载方法即可
test(a3);
//多态的好处:提高程序的拓展性
//这叫前期预先调用功能,后期定义子类去实现功能,并把子类作为参数,传递进来,实现了后期拓展性
public static void test(Animal sx){//1.Animal引用sx对象
sx.eat();//2.对象引用Animal的eat方法
}
}
abstract class Animal{//抽象的作用强制子类重写方法
abstract void eat();
}
class Cat extends Animal{
public void eat(){
System.out.println("吃鱼(重写Animal的eat方法)");
}
}
class Dog extends Animal{
public void eat(){
System.out.println("吃骨头(重写Animal的eat方法)");
}
}
//--------------百年后出现了另一种动物 猪
class Pig extends Animal{
public void eat() {
System.out.println("吃饲料(重写Animal的eat方法)");
}
public void gongdi(){
System.out.println("拱地");
}
}
多态的表现:一个对象在不同的状态下有多种形态:如你,对妻子来说你是丈夫,
对老师来说你是学生,对父母来说你是儿子,对老板来说你是员工多态比喻:事物的多种存在:猫是动物也叫猫,
其它有个名字叫小明,那么我叫它猫-动物-小明都三个名都是指它
-
- + -