作业,老师作业写得和原有题目有差别吗?

来源:1-1 继承的概念和特点

不惧岁月

2022-08-23 18:34:24

package jicheng.one1;

public class One1 {
private String yan;
private  String pin;
private  int lun=2;
private  int zuo=1;
public One1() {}
public One1(String yan,String pin) {
	this.setYan(yan);
	this.setPin(pin);
}
public One1(String yan,String pin, int lun,int zuo) {
	this.setYan(yan);
	this.setPin(pin);
	this.setLun(lun);
	this.setZuo(zuo);
}
public void sc1() {
	System.out.println("父类测试信息:"+"这是一辆"+this.getYan()+"颜色的"+this.getPin()+"牌的非机动车,有"+this.getLun()+"个轮子,有"
	+this.getZuo()+"个座椅。");
}
public String getYan() {
	return yan;
}

public void setYan(String yan) {
	this.yan = yan;
}

public String getPin() {
	return pin;
}

public void setPin(String pin) {
	this.pin = pin;
}

public int getLun() {
	return lun;
}

public void setLun(int lun) {
	this.lun = lun;
}

public int getZuo() {
	return zuo;
}

public void setZuo(int zuo) {
	this.zuo = zuo;
}


	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
package jicheng.one1;

public class One2 extends One1 {
	private String pin;
	private String yan;
	public One2() {}
	public One2(String yan,String pin) {
		super(yan,pin);
	}
	public void sc1() {
 	   System.out.println("自行车类测试信息:"+"这是一辆"+this.getYan()+"颜色的,"+this.getPin()+"牌的自行车。");
    }
       public String getPin() {
		return pin;
	}
	public void setPin(String pin) {
		this.pin = pin;
	}
	public String getYan() {
		return yan;
	}
	public void setYan(String yan) {
		this.yan = yan;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

     
	}

}
package jicheng.one1;

public class One3  extends One1{
private String dian;
public One3 () {}
	public One3(String dian) {
		this.setDian(dian);
	}
	public void sc1() {
		System.out.println("电动车类信息测试类:"+"这是一辆使用"+this.getDian()+"牌电池的电动车。");
	}
	public String getDian() {
	return dian;
}


public void setDian(String dain) {
	this.dian = dain;
}


	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
package jicheng.one1;

public class One4 extends One1{
private  int lun;
public One4() {
this.setLun(3);
}
public void sc1() {
	System.out.println("三轮车类信息测试:"+"三轮车是一款有"+this.getLun()+"个轮子的非机动车");
}
	public int getLun() {
	return lun;
}


public void setLun(int lun) {
	this.lun = lun;
}


	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
package jicheng.one2;
    import jicheng.one1.*;
public class Ce2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
          One1 sc1=new One1("红","天宇牌",4,2);
          sc1.sc1();
          One2 sc2=new One2("黄颜色","捷安特");
	       sc2.sc1();
	       One3 sc3=new One3("飞鸽牌");
	       sc3.sc1();
	       One4 sc4=new One4();
	       sc4.sc1();
	}

}

https://img.mukewang.com/climg/6304ab4c090db93707980805.jpg

super ()调用父类构造方法老师名字也必须一样啊,是因为它的set 和get要和父类完成继承链接才可以调用赋值吗,我用name最后赋值的是null空值  也是private 修饰在外面类想赋值必须通过set所以名字是必须一样让set方法名和父类完成链接?

老师下面图中三轮车这个类在无参中对属性赋值修改我写的对不对啊,有点不理解原题意思。


https://img.mukewang.com/climg/6304acbd08bec41707201600.jpg

写回答

1回答

好帮手慕小蓝

2022-08-24

同学你好~

    1.首先,需要再次强调标识符的命名问题。对于标识符,需要做到见名知意,而不是使用one1、sc1等无意义的名词。这样的书写方式对于自主学习也会有负面影响,因为目前学习中使用的类还比较少,不是很明显。在后面项目中,一个项目中有十几个类的时候,这样的命名会让自己在方法调用时多出不必要的思考成本。

    另外,这样的命名方法,当代码出现错误时,提供给老师时,老师也无法理解代码的含义。因为这样的命名,代码几乎没有可读性。如果老师都无法读懂同学的代码,那么就无法正确的为同学解答问题。

    最后,这样的命名习惯一旦养成,在后续学习甚至工作中,会不自觉的这样进行书写,但这样的习惯在公司是严格禁止的。

    所以,养成良好的命名习惯是从学习之初就要注意的。如果同学的英文单词词汇量较少,可以下载电子辞典,当需要使用单词时,查询一下即可,切记,不要使用拼音,这也是实际工作中禁止的书写方式。

    2.使用super引用父类构造方法时,本质是将本类构造方法的参数,通过super传递给父类,所以在spuer中参数名字必须与本类构造方法的参数列表中的参数保持一致。

    为父类属性赋值时,如果通过构造方法,尽量使用super而不是直接调用set方法。

    3.同学代码中通过无参构造修改属性的写法是正确的。

祝学习愉快~


0

0 学习 · 9886 问题

查看课程