在Java语言中,多态有两种:类内部之间的多态和类之间的多态。我们先看一下标准的概念:
多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定
(1)Java的方法重载(类内部之间的多态):就是在类中可以创建多个方法,它们具有相同的名字,但可具有不同的参数列表、返回值类型。我们举个例子来解释,就是一对夫妇生了多胞胎,多胞胎之间外观相似,其实是不同的孩子。
(2)Java的方法重写(父类与子类之间的多态):子类可继承父类中的方法,但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。重写的参数列表和返回类型均不可修改。我们再举个例子,就是子承父业,但是儿子有自己想法,对父亲得产业进行再投资的过程。
1、类内部之间得多态:方法重载
public class SingleClass {
//孩子1:
public String child(){
System.out.println("child1");
return "child1";
}
//孩子2:与孩子1参数个数不同
public String child(String a){
System.out.println("child2");
return "child2";
}
//孩子3:与孩子4参数顺序不同
public String child(int a,String s){
System.out.println("child3");
return "child3";
}
//孩子4:与孩子3参数顺序不同
public String child(String s,int a){
System.out.println("child4");
return "child4";
}
public static void main(String[] args){
//重载方法调用:略
}
}
从上述代码我们可以看到,在类的内部可以有相同的方法名,但是有唯一的参数列表。当然返回类型和修饰符也可以不同。下面我们再看一下类之间的多态。
2.类之间的多态:方法重写
类之间的多态其实是有两种方式:继承和接口。我们对这两种方式一个一个说明。
(1)继承方式实现多态
对于继承方式我们使用一个例子来解释,比如说父亲可以对自己的房子有处理权,儿子继承父业同样也有处理权。
第一步:定义父类
public class Father {
public void dealHouse(){
System.out.println("父亲处置房产");
}
}
第二步:定义子类(大儿子和小儿子)
//大儿子
public class SonA extends Father {
@Override
public void dealHouse() {
System.out.println("大儿子处置房产");
}
}
//小儿子
public class SonB extends Father {
@Override
public void dealHouse() {
System.out.println("小儿子处置房产");
}
}
第三步:测试
public class Test {
public static void main(String[] args) {
Father father=new Father();
Father sonA=new SonA();
Father sonB=new SonB();
father.dealHouse();
sonA.dealHouse();
sonB.dealHouse();
}
}
//父亲处置房产
//大儿子处置房产
//小儿子处置房产
(2)接口方式实现多态
接口方式实现继承方式其实跟上面一样,只不过把父类变成了接口而已,其他内容只有微笑的变化,这里就不演示了,在这里只给出父接口的形式。
public interface Father {
public void dealHouse();
}
到了这基本上就对多态形式的代码实现进行了演示,案例也比较简单,但是这对我们理解多态的思想还不够,我们最主要的还是从虚拟机的角度来分析一下。虚拟机的相关知识在动力节点在线的视频课程中有全面的讲解。
提枪策马乘胜追击04-21 20:01
代码小兵92504-17 16:07
代码小兵98804-25 13:57
杨晶珍05-11 14:54