Java是一门面向对象的编程语言,面向对象的编程语言三个重要的特点是:封装、继承、多态。
1.多态的概念
多态是一种思想, 故名思意是多种形态的意思,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。比如鸟和羊,两个都是动物,但鸟会飞且是卵生动物,而羊只会跑且是胎生动物,因其本身的特性而区分出了动物的种类,且鸟只是一个统称其中还区分出了蜂鸟、啄木鸟等等,这里就表现出了动物的多种形态。
2.多态的实现条件
Java中要实现多态,必须满足以下几个条件,缺一不可
1)必须在继承体系下
2)子类必须要对父类中方法进行重写
3)通过父类的引用调用重写的方法
3.使用多态的案例
class Animal{
public String name ="动物";
public void Behave(){
System.out.println(name+"吃东西");
}
}
class Bird extends Animal{
public String name = "小鸟";
@Override
public void Behave() { //方法的重写
System.out.println(name+"吃虫子");
}
}
class Sheep extends Animal{
public String name = "绵羊";
@Override
public void Behave() {
System.out.println(name+"吃草");
}
}
上面的代码中我们定义了一个父类Animal,两个子类Bird、Sheep,并在子类中对父类的方法Behave进行了重写
再看下面的代码
public class Test2{
public static void main(String[] args) {
Animal fruit1 = new Animal();
Animal fruit2 = new Bird();
Animal fruit3 = new Sheep();
fruit1.Behave();
fruit2.Behave();
fruit3.Behave();
}
}
这段代码我们分别用父类new了三个对象,并分别调用了Behave方法,看下输出结果
从输出结果来看 --我们引出了一个新的知识点 -------->向上转型!
向上转型:是子类继承父类,并创建对象的过程 或者换句话来说 实际就是创建一个子类对象,将其当成父类对象来使用。
语法格式:父类 对象名 = new 子类类型() ;
子类继承后,只能调用父类中已有的方法,不能调用子类独特的方法。如果子类中已重写,则调用重写的方法。
4.向上转型的优缺点
优点:让代码实现更简单灵活
缺点:不能调用到子类特有的方法
如果需要调用到子类中特有的方法则需要进行向下转型则将父类引用再还原为子类对象