作者: 董晗 时间: 2015-1-24 14:27
你这写的有错啊,A继承B,A中有个dec方法,那你创建B对象,b.dec();会报错作者: gzy 时间: 2015-1-24 15:30
1111111111111作者: 温晓慧 时间: 2015-1-24 22:37
不好意思,各位大神,小弟今天出去干活了,这么多大神帮忙解答作者: 温晓慧 时间: 2015-1-24 22:42
package otherExam2;
/*
* 假如我们在开发一个系统时需要对员工进行建模,员工包含 3 个属性:姓名、工号以及工资。
* 经理也是员工,除了含有员工的属性外,另为还有一个奖金属性。
* 请使用继承的思想设计出员工类和经理类。要求类中提供必要的方法进行属性访问。
* */
public class Exam1 {
public static void main(String[] args) {
Person p = new Person("李四","12345",1223.22d);
p.dec();
Maner m = new Maner("张经理","99999",201333.11d);
p.dec();
m.setBonus(1234.22d);
m.dec();
m.aec();
System.out.println(m.getBonus());
}
}
class Person
{
public static String name;
public static String ID;
public static double money;
public Person(String name,String ID,double money)
{
this.name =name;
this.ID= ID;
this.money=money;
}
public static void dec()
{
System.out.println("正常工资为"+name+","+ID+","+money);
}
}
class Maner extends Person
{
public Maner(String name, String ID, double money) {
super(name, ID, money);
// TODO Auto-generated constructor stub
this.getBonus();
}
private double bonus;
public double getBonus() {
return bonus;
}
public void setBonus(double bonus) {
this.bonus = bonus;
}
public static void aec()
{
System.out.println("奖金为:");
}
}
作者: 温晓慧 时间: 2015-1-24 22:51
不好意思,电脑问题,不能在代码里编辑,只能直接发了。。。。抱歉作者: IcedCoffee 时间: 2015-1-24 23:49
Person p = new Person("李四","12345",1223.22d);
p.dec();
Maner m = new Maner("张经理","99999",201333.11d);
p.dec();
在这里你注意下 你的对象全是P 如果你下面的对象是m结果值就会改变了 这里和继承的关系不大
p是父类创建的引用对象 而m是子类创建的引用的对象 你下面还用p引用函数 他引用的地址值是上面
new Person的 而不是子类对象创建的Maner m 作者: IcedCoffee 时间: 2015-1-24 23:52
最后那个Manner m 写的有点会让你误解 那个m就是创建的对象 他引用的是new Manner 在堆中新开辟的地址值 你用p调用的是 new Person在堆中开辟的地址值 其实你是调用了2次相同的地址值 所以一样