继承: 子类拥有父类的属性和方法。(面向对象的三大特征之一) 子类: 父类: (基类、超类) 特点: 1 子类不能继承父类的private属性和方法 2 类的继承是单继承,但是可以多重继承。 3 一般属性用private修饰,方法用public修饰,所以我们以后开发的工作里面,主要是继承方法的。 格式: extends public 子类 extends 父类{ } 使用场景: 如果多个类有共同的属性和方法,那么我们可以把这些类中共同的属性和方法放到父类中,让这些类(子类)去继承父类,减少代码的重复性。
this、super 都可以代表对象,对象可以调用属性和方法 this.xx super.xx 构造方法里面怎么用。 this() super() 代表调用构造方法,并且只能在构造方法里面被调用,而且必须放在第一行 this: 1 对象本身,new的对象就是这个this 2 this() 调用构造方法,可以有参数,一般只在构造方法里面 3 如果构造方法里面调用this(),只能放在第一行,否则报错。 构造方法补充: 如果类里面没有写构造方法,那么系统默认给一个无参构造方法。 如果类里面有有参构造方法,那么系统不会给无参构造方法。 super 1 代表的就是父类对象 2 子类的构造方法里面,默认第一句会添加super() 3 如果子类构造方法手动调用super(),必须放在第一行
静态>普通 父类>子类的 代码块>构造方法 父类静态代码块 子类静态代码块 父类代码块 父类构造方法 子类代码块 子类构造方法
package com.cn.Car;
//父类
public class CarSelling {
private String brand;//品牌
private String models;//型号
private int price;//售价
public CarSelling() {
}
public CarSelling(String brand, String models, int price) {
this.brand = brand;
this.models = models;
this.price = price;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getModels() {
return models;
}
public void setModels(String models) {
this.models = models;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
package com.cn.Car;
//子类
public class Acar extends CarSelling{
//小轿车
private double consumption;//油耗
private String engine;//发动机
public Acar(String brand, String models, int price, double consumption, String engine) {
super(brand, models, price);
this.consumption = consumption;
this.engine = engine;
}
public double getConsumption() {
return consumption;
}
public void setConsumption(double consumption) {
this.consumption = consumption;
}
public String getEngine() {
return engine;
}
public void setEngine(String engine) {
this.engine = engine;
}
}
package com.cn.Car;
//子类
public class Truck extends CarSelling {
private int load;//载重
private String goods;//拉货物
public Truck() {
}
public Truck(String brand, String models, int price, int load, String goods) {
super(brand, models, price);
this.load = load;
this.goods = goods;
}
public int getLoad() {
return load;
}
public void setLoad(int load) {
this.load = load;
}
public String getGoods() {
return goods;
}
public void setGoods(String goods) {
this.goods = goods;
}
}
package com.cn.Car;
import java.util.Scanner;
public class SellingCars {
public Scanner scanner = new Scanner(System.in);
public void Sellingcars() {
Acar acar = new Acar("凯迪拉克", "CT6", 38, 18, "xxxxx");
Truck truck = new Truck("一汽", "大卡车", 20, 10, "什么都能拉");
System.out.println("--------------欢迎进入卖车系统----------------");
System.out.println("1.小坐一会 2.随便看看 3.试驾一下");
int i = scanner.nextInt();//选择选项
switch (i) {
case 1:
System.out.println("好的,你有需要联系我");
break;
case 2:
System.out.println("1.轿车 2.卡车");
int choose = scanner.nextInt();//选择:1.轿车 2.卡车
switch (choose) {
case 1:
System.out.println("您选择购买轿车凯迪拉克,请付款35万元人民币:");
int choose1 = scanner.nextInt();
if (choose1 == 350000) {
System.out.println("付款成功,您成功在欣知汽车购买凯迪拉克轿车一辆。");
System.out.println("您购买的轿车型号如下:");
System.out.println("品牌:"+acar.getBrand());
System.out.println("型号:"+acar.getModels());
System.out.println("售价:"+acar.getPrice());
System.out.println("百公里油耗:"+acar.getConsumption());
System.out.println("发动机类型:"+acar.getEngine());
} else {
System.out.println("付款失败");
}
break;
case 2:
System.out.println("您选择购买卡车一汽,请付款30万元人民币:");
int choose2 = scanner.nextInt();
if (choose2 == 300000) {
System.out.println("付款成功,您成功在欣知汽车购买一汽卡车一辆。");
System.out.println("您购买的卡车型号如下:");
System.out.println("品牌:"+truck.getBrand());
System.out.println("型号:"+truck.getModels());
System.out.println("售价:"+truck.getPrice());
System.out.println("最人载重:"+truck.getLoad());
System.out.println("可拉货物类型:"+truck.getGoods());
} else {
System.out.println("付款失败");
}
}break;
case 3:
System.out.println("6666");
break;
default:
System.out.println("输入错误");
}
}
}
package com.cn.Car;
public class Test {
public static void main(String[] args) {
SellingCars sellingCars = new SellingCars();
sellingCars.Sellingcars();
}
}