java===java基础学习(11)---继承
2018-04-08 14:41
441 查看
继承可以解决代码复用,让编程更加靠近人的思维。当多个类存在相同的属性(变量)和方法时,可以从这些类中抽象出父类,在父类中定义这些相同的属性和方法。所有的子类不需要重新定义这些属性和方法,只需要通过extends语句来声明继承父类:
class 子类 extends 父类
这样,子类就会自动拥有父类定义的属性和方法。
*父类的public修饰符的属性和方法,protected修饰符的属性和方法,默认修饰符的属性和方法被子类继承了,父类的private修饰符的属性和方法不能被子类继承。
注意事项:
- 子类最多只能继承一个父类
- java所有的类都是object类的子类
下面是由继承Employee 类来定义Manager 类的格式, 关键字extends 表示继承。
public class Manager extends Employee{ 添加方法和域}
子类中继承父类的域和方法;
子类构造器
public Manger(String name, double salary, int year, int month, int day){ super(name, salary, year, month, day); bonus = 0;}
因为子类终的构造器不能直接访问父类的私有域,所以必须利用父类的构造器对这部分私有域进行初始化,可以使用super实现对父类构造器的调用。使用super调用构造器的语句必须是子类构造器的第一条语句。
package testbotoo; import java.time.LocalDate; public class Employee { private String name; private double salary; private LocalDate hireDay; public Employee(String name, double salary, int year, int month, int day) { this.name = name; this.salary = salary; hireDay = LocalDate.of(year, month, day); } public String getName() { return name; } public double getSalary() { return salary; } }
package testbotoo; public class Manager extends Employee { private double bonus; /** * @param name the employee's name * @param salary the salary * @param year the hire year * @param month the dire onth * @param day the hire day */ public Manager(String name, double salary, int year, int month, int day) { super(name, salary, year, month, day); bonus = 0; } public double getSalary() { double baseSalary = super.getSalary(); return baseSalary +bonus; } public void setBonus(double b) { bonus = b; } }
package testbotoo; public class ManagerTest { public static void main(String[] args) { Manager boss = new Manager("aaa",8000,1999,12,20); boss.setBonus(5000); Employee[] staff = new Employee[3]; staff[0] = boss; staff[1] = new Employee("hary",5000,1989,3,15); staff[2] = new Employee("mayun",50000,1989,3,16); for (Employee e : staff) System.out.println("name="+e.getName()+",salary="+e.getSalary()); } }
相关文章推荐
- 【Java学习笔记】基础知识学习11【集合和列表类】
- JAVA 基础学习(11)
- JAVA基础知识再学习(3)继承概论 & 子类实例化过程
- Java学习总结11——基础类库1(String相关类)
- 黑马程序员 -- Java基础学习(11)
- 黑马程序员—11—java基础:有关线程通信的学习笔记和学习心得体会
- 【Java学习笔记】基础知识学习10【继承与多态】
- 黑马程序员_java基础学习笔记11_反射
- java学习之旅38--面向对象_11_继承_基本概念
- 黑马程序员—java基础学习--继承(extends)
- java基础学习之(一):继承
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- java基础教程学习笔记总结 11-18节
- JAVA学习笔记11——继承+重写
- 黑马程序员 JAVA学习笔记——java基础 继承
- Java基础班学习笔记(11)API常用类(二)
- java 从零开始,学习笔记之基础入门<重载_覆盖_继承>(十)
- Java基础学习笔记 -- 11(方法、重载、递归)
- 黑马程序员 Java基础学习笔记11 异常
- Java学习总结11——基础类库2(容器1)