欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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]

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
相关标签: Java