面向对象——继承

       继承:面向对象最显著的一个特性,从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。最常使用的两个关键字是extends和implements。

 任务:编写交通工具类,具有前进run()功能,子类有自行车、小轿车、地铁,重写父类方法,主人有属性name,age属性,方法回家goHome(交通工具),需要使用交通工具,使用抽象类优化程序。
创建一个交通工具抽象类:
package test_abstract;
public abstract class Vehicle {
     //成员变量(属性)
int speed;//速度
int wheel; //车轮
    //有参数的构造方法
public Vehicle(int speed, int wheel) {
super();
this.speed = speed;
this.wheel = wheel;
}
     //成员方法(功能)
public abstract void run();// 前进run()功能
}
创建一个自行车类(使用继承):
package test_abstract;
public class Bike extends Vehicle{
public Bike(int speed, int wheel) {
super(speed, wheel);
}
@Override
public void run() { //重写方法
// TODO Auto-generated method stub
System.out.println("骑自行车回家,速度为"+this.speed+"m/s。");
}
}
创建一个小轿车类(使用继承):
package test_abstract;
public class Car extends Vehicle {
public Car(int speed, int wheel) {
super(speed, wheel);
}
@Override
public void run() { //重写方法
// TODO Auto-generated method stub
System.out.println("开小轿车回家,速度为"+this.speed+"m/s。");
}
}
创建一个地铁类(使用继承):
package test_abstract;
public class Subway extends Vehicle {
public Subway(int speed, int wheel) {
super(speed, wheel);
}
@Override
public void run() { //重写方法
// TODO Auto-generated method stub
System.out.println("乘地铁回家,速度为"+this.speed+"m/s。");
}
}
创建一个人类:
package test_abstract;
public class Person {
      //成员变量(属性)
String name;
int age;
       //有参数的构造方法
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
       //有参数成员方法
public void goHome(Vehicle vehicle){
System.out.print(this.name+","+this.age+"岁,");
if (vehicle instanceof Bike) {//判断交通工具属于哪一类
Bike bike = (Bike) vehicle;//向上转型
bike.run();//调用方法
}else if (vehicle instanceof Car) {
Car car = (Car) vehicle;
car.run();
}else {
Subway subway = (Subway) vehicle;
subway.run();
}
}
}
创建一个测试类:
package test_abstract;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Vehicle vehicle = null;
Person host = new Person("小明", 25);
System.out.println("请输入数字选择交通工具:");
        //调用scanner输入方法
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){//循环出入
     int i = scanner.nextInt();
     if (i%3 == 0) {
vehicle = new Bike(20, 2);
}else if (i%3 == 1) {
vehicle = new Car(60, 4);
}else {
vehicle = new Subway(80, 50);
}
host.goHome(vehicle);//调用方法
     }
      }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值