java继承的举例_java继承实例
实例需求:实现一个名为Person的类和它的子类Employee,Manager是Employee的子类,设计一 个类Add()用于涨工资,普通员工一次能涨10%,经理能涨20%。
具体要求如下:
(1)Person类中的属性有:姓名name String(类型),地址address(String类型),定义该类的构造方法;(2)Employee 类中的属性有:工号ID(String类型),工资wage(double类型),工龄(int 型),定义该类的构造方法;
(3)Manager类中的属性有:级别level(String类型)定义该类的构造方法;
(4)编写一个测试类,产生一个员工和一个经理,给该员工和经理涨工资。
1、利用继承的特性
当子类没有相应的成员方法时,调用父类的同名方法。
Person.java
package person_employee;
public class Person {
private String name = "";
private String address = "";
//定义构造方法
public Person(String name, String address){
this.name = name;
this.address = address;
}
}
Employee.java
package person_employee;
// 继承Person类
public class Employee extends Person {
private String ID = "";
private double wage = 0;
private int age = 0;
public Employee(String name, String address, String ID, double wage, int age){
super(name, address); //调用父类的构造方法
this.ID = ID;
this.wage = wage;
this.age = age;
}
public double add(String position){// 判断职位
if(position == "0"){
wage = wage*1.2;
}
else{
wage = wage*1.1;
}
return wage;
}
//设置get/set方法
public double getWage() {
return wage;
}
public void setWage(double wage) {
this.wage = wage;
}
}
Manager.java
package person_employee;
//继承Employee类
public class Manager extends Employee{
private String level = ""; //1为普通员工,0为经理
public Manager(String name, String address, String ID, double wage, int age, String level){
super(name, address, ID, wage, age);
this.level = level;
}
//设置get/set方法
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
}
Test.java
package person_employee;
public class Test {
public static void main(String[] args) {
// 新建对象
Manager normal = new Manager("wsl", "jit", "12", 1000, 2, "1");
Manager manager = new Manager("ctl", "jitt", "123", 10000, 10, "0");
// 传入职位,Manager类型的对象没有add()方法,所以自动搜寻其父类,调用add()方法
normal.add(normal.getLevel());
manager.add(manager.getLevel());
System.out.println("normal wage is:"+normal.getWage());
System.out.println("manager wage is:"+manager.getWage());
}
}
打印结果:
打印结果
2、定义抽象类
定义抽象类,在子类中实现不同的抽象方法。
Person.java
package person_employee;
public class Person {
private String name = "";
private String address = "";
//定义构造方法
public Person(String name, String address){
this.name = name;
this.address = address;
}
}
Employee.java
package person_employee;
public abstract class Employee extends Person {
private String ID = "";
private double wage = 0;
private int age = 0;
public Employee(String name, String address, String ID, double wage, int age){
super(name, address);
this.ID = ID;
this.wage = wage;
this.age = age;
}
//定义抽象方法
public abstract void add(String position);
//设置get/set方法
public double getWage() {
return wage;
}
public void setWage(double wage) {
this.wage = wage;
}
}
Manager.java
package person_employee;
public class Manager extends Employee{
private String level = "";
public Manager(String name, String address, String ID, double wage, int age, String level){
super(name, address, ID, wage, age);
this.level = level;
}
//实现抽象方法
public void add(String position){
double wage = super.getWage();
if(position == "0"){
super.setWage(wage*1.2);
}
else{
super.setWage(wage*1.1);;
}
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
}
Test.java
package person_employee;
public class Test {
public static void main(String[] args) {
Manager normal = new Manager("wsl", "jit", "12", 1000, 2, "1");
Manager manager = new Manager("ctl", "jitt", "123", 10000, 10, "0");
normal.add(normal.getLevel());
manager.add(manager.getLevel());
System.out.println("normal wage is:"+normal.getWage());
System.out.println("manager wage is:"+manager.getWage());
}
}
打印结果一样。
3、在2的基础上利用多态实现方法的重载
Manager.java
package person_employee;
public class Manager extends Employee{
private String level = "";
public Manager(String name, String address, String ID, double wage, int age, String level){
super(name, address, ID, wage, age);
this.level = level;
}
//实现抽象方法
public void add(){
double wage = super.getWage();
super.setWage(wage*1.1);
}
public void add(String position){
double wage = super.getWage();
super.setWage(wage*1.2);
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
}
Test.java
package person_employee;
public class Test {
public static void main(String[] args) {
Manager normal = new Manager("wsl", "jit", "12", 1000, 2, "1");
Manager manager = new Manager("ctl", "jitt", "123", 10000, 10, "0");
normal.add();
manager.add(manager.getLevel());
System.out.println("normal wage is:"+normal.getWage());
System.out.println("manager wage is:"+manager.getWage());
}
}
打印结果一样
java继承的举例_java继承实例相关推荐
- java实验报告4继承与多态_Java继承与多态实验报告
西 西 安 安 邮 邮 电 大 学 (计算机学院) 课内实验报告 实验名称: : 态 继承与多态 ﻩ ﻩ 专业名称: 计算机科学与技术 班 班 级: 计科 1405 班 学生姓名: 高宏伟 学 学 号 ...
- java继承的性质_java 继承的特性
java的三大特性之一-----继承 继承的特性: 1.提高了代码的复用性----代码的简洁 2.让类与类之间产生了关系.有了这个关系,才有了多态的特性. 注意:千万不要为了获取其他类的功能,简化代码 ...
- java继承对象转换_java 继承的基础(转)
java 继承的基础(转)[@more@]继承是面向对象编程技术的一块基石,因为它允许创建分等级层次的类.运用继承,你能够创建一个通用类,它定义了一系列相关项目的一般特性.该类可以被更具体的类继承,每 ...
- java继承与多态_Java继承与多态
感慨一下,到了现在感觉Java里面很多东西都是模模糊糊,不能这样了,一点点解决吧.今天看了继承与多态的一些内容,感觉看得很浅,先写下来,算是巩固,如果后面看到更好的内容,再慢慢加上去. 继承与多态,他 ...
- java继承的作用_Java继承概述以及Java继承案例和继承的好处
Java继承概述 1.多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些相同属性和行为,只要继承那个类即可. 2.在Java中通过extends关键字可以实现类与类的 ...
- java的继承和访问_Java 继承和访问控制
类的继承 Java中使用extends来实现继承 通过继承,子类自动拥有了基类(supercalss)的所有成员. Java只支持单继承,一个子类只允许有一个基类,一个基类可以有多个子类. class ...
- java 继承 私有变量_java – 继承和私有变量
在HourlyEmployee和SalariedEmployee子类中,我们调用super()将"name"传递给基类构造函数.我有两个问题: >变量名称来自哪里,这是aNa ...
- java继承与多态性_Java继承与多态浅析
一.继承 1.通过extends继承的父类可以是不加abstract关键字的普通类,也可以是加了abstract关键字的抽象类.继承普通类时可以覆写父类的方法,或者创建自己独有的方法,或者这两 ...
- java编程的例子_java编程实例
1:编写程序,判断给定的某个年份是否是闰年. 闰年的判断规则如下:(1)若某个年份能被4整除但不能被100整除,则是闰年.(2)若某个年份能被400整除,则也是闰年. import java.util ...
最新文章
- C#Hello World
- ios 裁剪框大小_iOS实现裁剪框和图片剪裁功能
- java画笔覆盖在界面_Java学习笔记:swing画笔工具Graphics,刷新页面,键盘事件,随机数等【诗书画唱】...
- 启动页面和各设备的宽高比及像素
- 兼容各种浏览器的自动左右滚动兼左右点击滚动代码
- (亲测)vue-cli项目添加骨架屏多种方式,自动生成骨架屏
- 公募FOF同质化产品情况引人关注
- 文本情感分类python_文本情感分类(一):传统模型
- 安卓模拟ibeacon_android iBeacon开发模拟实例
- 移动硬盘上安装Ubuntu18.04系统
- 机器学习中的奥卡姆剃刀定律
- pvid与access的关系_浅谈PVID和VID区别
- 如何在D盘以管理员身份,运行cmd
- 通达OA工作流插件--保存OA流程中的所有附件+流程表单到指定目录(2013adv,2015,2016)
- jsoup模拟登陆合肥工业大学信息门户
- java学习---类与对象
- 前端岗位一般的任职要求
- web程序无法访问:The requested resource () is not available.错误
- html代码中的nofollow属性
- chatgpt 镜像版
热门文章
- 为什么学好计算机就必须学好汇编?
- 网络工程师交换试验手册之十八:SWITCH的基本配置
- 阿里云CentOS6.3 安装MongoDB教程
- 全国计算机二级vb得分技巧,全国计算机等级考试二级VB笔试各题型答题技巧(2)...
- linux测试dvi接口,液晶显示器DVI接口及测试规范.pdf
- yum源查看mysql_获取MySQL各版本yum源 并安装
- oracle输出xml文件格式,在oracle中通过字段信息生成xml文件
- c语言定义数组变量初始化为0,c语言数组初始化——int a[N] = {0};
- ExcelPro《EXCEL图表之道-如…
- linux 关机时卸载sd,Linux下U盘SD卡的自动挂载和卸载