第一种向下类型转换

1、父类

package com.wyq.study;

public class Car {
	//1、书写私有属性
	private String carType;
	private String carNo;
	public void setCarType(String carType){
		this.carType = carType;
	}
	public String getCarType(){
		return carType;
	}
	public void setCarNo(String CarNo){
		this.carNo = carNo;
	}
	public String getCarNo(){
		return carNo;
	}
	public Car(){
		super();
		System.out.println("这里是无参的构造方法。");
	}
	public Car(String carType,String carNo){
		super();
		this.carType = carType;
		this.carNo = carNo;
		System.out.println("这里是父类的带参构造方法。");
	}
	public void start(){
		System.out.println("我是车,我启动");
	}
	public void stop(){
		System.out.println("我是车,我停止");
	}
	public void tst(String sdf){
		System.out.println("这里是测试附列的普通方法"+this.carType+"\t"+carNo+"\t+"+sdf);
	}
}

2、子类1

package com.wyq.study;

public class Taxi extends Car{
	private String company;
	public void setCompany(String company){
		this.company = company;
	}
	public String getCompany(){
		return company;
	}
	public Taxi(){
		super();
	}
	public Taxi(String carType,String carNo,String company){
		super(carType,carNo);
		this.company = company;
		System.out.println("这里是子类的带参构造:"+company+"\t"+super.getCarType()+"\t"+super.getCarNo());
	}
	@Override
	public void start() {
		super.start();
		System.out.println("我是"+company+"公司的,我是车,我启动。");
	}
	@Override
	public void stop() {
		super.stop();
		System.out.println("我是"+company+"的,我是车,我停止");
	}
	public void run(String place){
		System.out.println("在"+place+"跑。");
	}
}

2、子类2

package com.wyq.study;

public class MyCar extends Car{
	private String name;
	public void setName(String name){
		this.name = name;
	}
	public String getName(){
		return name;
	}
	public MyCar(){
		super();
	}
	public MyCar(String carType,String carNo,String name){
		super(carType,carNo);
		this.name = name;
	}
	@Override
	public void start() {
		super.start();
		System.out.println("我是"+name+"我启动"+super.getCarType()+"\t"+super.getCarNo());
	}
	@Override
	public void stop() {
		super.stop();
		System.out.println("我是"+this.name+"我的汽车,我停止。");
	}
}

3、测试类

package com.wyq.study;

public class TestCar {
	public static void main(String[] args) {
//		Car c = new Car("大众","123456");
//		c.start();
//		c.stop();
////		System.out.println("**********************************");
//		Car ta = new Taxi("北京现代","京A11111", "景顺出租车");
//		ta.start();
//		ta.stop();
////		ta.run("北京");
//		System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
//		Car mc = new MyCar("奥迪A8","京P882","张三");
//		mc.start();
//		mc.stop();
////		System.out.println("输出所有的属性:"+c.getCarType()+"\t"+c.getCarNo()+"\t"+ta.getCarType()+"\t"+ta.getCarNo()+"\t"+ta.getCompany()+"\t"+mc.getCarType()+"\t"+mc.getCarNo()+"\t"+mc.getName());
	//向下类型转换
//		Taxi tx = (Taxi) c;
//		tx.run("深圳");
//		System.out.println("向下类型转化的结果为:"+tx.getCarType()+"\t"+tx.getCarNo()+"\t"+tx.getCompany());
//		
//		tx.tst("adjkfhskjdfhk");
		//第二种
		System.out.println("向下类型转换");
		Car ca = new Taxi("北京现代","京A11111", "景顺出租车");
//		ca.start();
//		ca.tst("afjsdjlkfs");
//		ca.stop();
		Taxi tg = (Taxi)ca;
		tg.start();
		tg.stop();
		tg.run("海淀");
		tg.tst("#################");
		//第三种
		System.out.println("第三种向下转换类型的方法");
		Car cr = new Car();
		if(cr instanceof Taxi){
			System.out.println("sjfdlksjdlkfjslk");
			Taxi ti = (Taxi) cr;
			ti.start();
			ti.stop();
			ti.tst("********************");
			ti.run("昌平");			
		}	else
			System.out.println("没有向下做类型转换");
	}
}

猜你喜欢

转载自blog.csdn.net/wyqwilliam/article/details/91684235