JAVA多态编写一个车类_java多态

大家都知道java有三大特性就是封装,继承和多态 今天我们要说的就是其中的多态

什么是多态

定义

多态是面向对象程序设计语言最核心的特征,意味着一个对象有着多重特征,可以在特定的情况下表现不同的状态从而对应不同的属性和方法

实现技术:动态绑定

指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。

作用

消除类型之间的耦合关系

实现多态的必要条件:继承、重写、向上转型

继承:多态中必须存再有继承关系的子类和父类

重写:子类对父类中某些方法进行重新定义,调用这些方法时会调用子类的方法

向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类的方法和子类的方法

只有满足这三个条件是才能够在同一个继承结构中使用统一的逻辑实现代码处理不同的对象,从而达到执行不同的行为

多态的好处

1.可替换性(substitutability):多态对已存在代码具有可替换性

2.可扩充性(extensibility):多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能

3.接口性(interface-ability):多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的

4.灵活性(flexibility):它在应用中体现了灵活多样的操作,提高了使用效率

5.简化性(simplicity):多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要

多态的实现方式

接口实现

//汽车接口

public interface Car {

//名称

String getName();

//价格

int getPrice();

}

//具体汽车类

public class BMW implements Car {

@Override

public String getName() {

return "BMW";

}

@Override

public int getPrice() {

return 10;

}

}

public class AODI implements Car {

@Override

public String getName() {

return "AODI";

}

@Override

public int getPrice() {

return 5;

}

}

//汽车商店

public class CarShop {

//卖出总价

private Integer saleTotal = 0;

//卖出一辆汽车

public void saleCar(Car car) {

System.out.println("汽车类型 " + car.getName() + " 售价 " + car.getPrice());

saleTotal += car.getPrice();

}

public Integer getSaleTotal() {

return saleTotal;

}

//测试方法:传入不同的具体类型 实现多态

public static void main(String[] args) {

CarShop carShop =new CarShop();

carShop.saleCar(new BMW());

carShop.saleCar(new BMW());

carShop.saleCar(new AODI());

System.out.println("销售总金额 " +carShop.getSaleTotal());

}

}

输出结果:

汽车类型 BMW 售价 10

汽车类型 BMW 售价 10

汽车类型 AODI 售价 5

销售总金额 25

继承父类进行方法重写

public class Animal {

public void eat() {

System.out.println("吃东西+++++++++++");

}

public void drink(){

System.out.println("喝东西+++++++++++");

}

}

public class Dog extends Animal {

public void run() {

System.out.println("dog 跑++++++++");

}

//重写父类方法,实现多态

public void eat() {

System.out.println("dog 吃东西++++++++ ");

}

public static void main(String[] args) {

Dog dog =new Dog();

//子类重写方法

dog.eat();

//子类未重写方法

dog.drink();

}

}

同一个类中进行方法重载

public class Overloading {

public int test(){

System.out.println("test1");

return 1;

}

public void test(int a){

System.out.println("test2");

}

//以下两个参数类型顺序不同

public String test(int a,String s){

System.out.println("test3");

return "returntest3";

}

public String test(String s,int a){

System.out.println("test4");

return "returntest4";

}

public static void main(String[] args){

Overloading o = new Overloading();

System.out.println(o.test());

o.test(1);

System.out.println(o.test(1,"test3"));

System.out.println(o.test("test4",1));

}

}

输出结果:

test1

1

test2

test3

returntest3

test4

returntest4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值