Java多态
java有四大基本特性:多态,封装,继承,抽象,这四大特性就好比四大金刚,很重要
在我前面的文章中我已经介绍了封装,继承,多态,今天我来讲讲多态
什么是多态?
多态就是指一个事物有不同表现形式。比如水有固态,液态,气态三种形态,我首先是个人,然后我也是一名程序员
Java中多态的实现格式
父类类型 对象名=new 子类名称();
注:
父类类型:指子类对象继承的父类类型,或者实现的父接口类型。
//Audi继承自Car类
Car audi=new Audi()
多态中成员的变量使用
口诀:编译看左边,运行看左边
父类类型 对象名=new 子类名称();
即左边是父类类型调用的就是父类的成员变量
下面通过一段代码演示一下
public class Audi extends Car {
int num=20;
}
public class Car {
int num=10;
}
public class Main {
public static void main(String[] args) {
Car audi = new Audi();
System.out.println(audi.num);
}
}
结果
可以看到调用的是父类的方法
多态中成员方法的使用
口诀:编译看左边,运行看右边
父类类型 对象名=new 子类名称();
对象名.方法名
编译看左边:说明调用的方法中,一定要是左侧的类型说有的方法,在这里就是父类必须要有的方法,否则会编译报错,更不用说运行了
通过代码演示可能更利于理解
public class Audi extends Car {
int num=20;
public int getNum() {
return num;
}
}
public class Car {
int num=10;
}
public class Main {
public static void main(String[] args) {
Car audi = new Audi();
audi.getnum();//这行会报错
}
}
结果
可以看到编译报错
运行看右边:即运行的时候调用的是子类的方法
老规矩上代码
public class Audi extends Car {
public void shuchu(){
System.out.println("这是子类的方法");
}
}
public class Car {
public void shuchu(){
System.out.println("这是父类方法");
}
}
public class Main {
public static void main(String[] args) {
Car audi = new Audi();
audi.shuchu();
}
}
结果
我们可以看到调用的是子类方法
多态的好处
拓展性与便利性,即把不同的子类类型都当作父类类型来看待,屏蔽不同子类之间的实现差异,从而写出通用代码达到通用编程的目的
上代码
public class Car {
public void run(){
System.out.println("这是车");
}
}
public class Benz extends Car {
public void run(){
System.out.println("这是奔驰");
}}
public class Audi extends Car {
public void run(){
System.out.println("这是奥迪");
}
}
public class Main {
public static void main(String[] args) {
Car audi = new Audi();
Car benz = new Benz();
run(audi);
run(benz);
}
public static void run(Car car){
System.out.println("这是什么车呀??");
car.run();
}
}
结果
我们可以看到在Main类的run(Car car)方法中,既可以传入Benz类也可以传入Audi类,这就体现了多态的优越性
以上就是多态的一些基础知识,如有错误还请各位批评指正