Java中有关继承的问题
程序员文章站
2022-04-11 11:56:42
...
[size=small]在类中属性一般设为private。父类的属性如果设为private,并提供了相应的public权限的get和set方法,那么[b][color=red]子类不能直接访问父类的属性[/color][/b],只能通过get或set方法,因为属性的权限是private,所以子类直接访问不到,但get和set方法是public的。还有一点需要说明的是,子类对父类的方法进行了重写,相当于子类拥有了更多的方法,因为子类不但拥有重写后的方法,同时还可以通过关键字super调用父类的方法。而[b][color=darkblue]不论是调用重写后的方法还是调用父类的方法,所修改的均为子类的属性值[/color]。[/size][/b]
[b]
[size=medium]运行结果:[/size][/b]
100.0
Employee: 500.0 , Manager: abc, 150.0, 50.0
class Employee {
private String name;
private float salary;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getSalary() {
return salary;
}
public void setSalary(float salary) {
this.salary = salary;
}
}
class Manager extends Employee {
private float bonus;
public float getBonus() {
return bonus;
}
public float getSalary() {
return super.getSalary() + bonus; //注意这一步要用super
}
public void setBonus(float bonus) {
System.out.println(super.getSalary());
this.bonus = bonus;
}
}
public class Test {
public static void main(String[] args) {
Employee e = new Employee();
e.setSalary(500);
Manager m = new Manager();
m.setName("abc"); //正确的操作
//m.name = "abc"; //错误的操作
m.setSalary(100);
m.setBonus(50);
System.out.println(" Employee: " + e.getSalary() + " , Manager: " + m.getName() + ", "+ m.getSalary() + ", " + m.getBonus());
}
}
[b]
[size=medium]运行结果:[/size][/b]
100.0
Employee: 500.0 , Manager: abc, 150.0, 50.0
上一篇: 如何用JS实现直接运行html的代码
下一篇: java中有关浮点运算的问题