想问下为什么car实例化的时候要传入参数呢
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public static void main(String[] args) { // 实例化父类对象,并传入两组相同的属性值 Car car1 = new Car("蓝色","张小泉"); Car car2 = new Car("蓝色","张小泉"); // 调用父类use方法 car1.use(); // 通过重写equals方法,比较两个对象是否相等 boolean flag = car1.equals(car2); System.out.println("car1和car2的引用比较:" + flag); System.out.println("=================================="); // 实例化子类Taxi对象,并传入属性值 Taxi taxi = new Taxi("蓝色", "张小泉", "长生"); // 调用ride和use方法 System.out.println(taxi.ride()); taxi.use(); // 输出重写toString后的taxi信息 System.out.println("taxi的信息是:" + taxi.toString()); System.out.println("=================================="); // 实例化子类HomeCar对象,并传入属性值 HomeCar hc = new HomeCar("紫色","孙二娘",7); // 调用display方法及它的重载方法 System.out.println(hc.display()); System.out.println(hc.display(5)); }} |
package com.imooc.car;
public class Car {
// 属性:车的颜色color、车主姓名userName
private String color;
private String userName;
public Car() {
}
// 带参构造函数(参数为color和useName)
public Car(String color, String userName) {
this.setColor(color);
this.setUserName(userName);
}
// 通过封装实现对私有属性的get/set操作
public void setColor(String color) {
this.color = color;
}
public String getColor() {
return color;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserName() {
return userName;
}
// 创建无参无返回值得方法use(描述内容为:我是机动车!)
public void use() {
System.out.println("我是机动车!");
}
// 重写equals方法,比较两个对象是否相等(比较color,userName)
public boolean equals(Car car) {
if (car == null) {
return false;
}
if (this.getColor().equals(car.getColor())
&& (this.getUserName().equals(car.getUserName()))) {
return true;
} else {
return false;
}
}
}package com.imooc.car;
public class HomeCar extends Car {
// 私有属性:载客数(num)
private int num;
public HomeCar() {
}
// 带参构造方法为所有属性赋值
public HomeCar(String color, String userName, int num) {
super(color, userName);
this.setNum(num);
}
// 通过封装实现对私有属性的get/set操作
public void setNum(int num) {
this.num = num;
}
public int getNum() {
return num;
}
// 创建无参无返回值的display方法,表现为:**拥有的**颜色的私家车,有**座位
public String display() {
String str = this.getUserName() + "拥有的" + this.getColor() + "颜色的私家车,有" + this.getNum() + "个座位";
return str;
}
// 重载display方法(带参数num),描述为:家用汽车大多有**个座位
public String display(int num) {
String str = "家用汽车大多有" + num + "个座位";
return str;
}
}package com.imooc.car;
public class Taxi extends Car{
// 私有属性:所属公司( company)
private String company;
public Taxi() {
}
// 调用父类的构造方法,完成属性赋值
public Taxi(String color, String userName, String company) {
super(color,userName);
this.setCompany(company);
}
// 通过封装实现对私有属性的get/set操作
public void setCompany(String company) {
this.company = company;
}
public String getCompany() {
return company;
}
// 创建不允许重写的ride方法,描述为:**出租车是所属于***公司的。
public final String ride() {
String str = this.getUserName() + "出租车是所属于" + this.getCompany() + "公司的。";
return str;
}
// 重写父类use方法,描述为:出租车是提高市民生活质量的重要条件之一
public void use() {
System.out.println("出租车是提高市民生活质量的重要条件之一");
}
// 重写toString方法,输出的表现形式不同(输出color,userName)
public String toString() {
String str = this.getUserName() + "拥有一辆" + this.getColor() + "的出租车";
return str;
}
}如题,今天报了个空指针,找了半天发现是没有传参,但是传入之后也没有被调用什么的,是不是我写法上有要优化的地方啊?求解
21
收起
正在回答
1回答
因为带参的构造方法就是实例化Car对象的时候用的,便于对象进行初始化。你所传入的参数的值,就是给对象的属性进行赋值。现在你的代码运行结果是正确的。
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星