java继承3个小题
1、实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty和Staff。具体要求如下:
(1)Person类中的属性有:姓名name(String类型),地址address(String类型),电话号码telphone(String类型)和电子邮件地址email(String类型);
(2)Employee类中的属性有:办公室office(String类型),工资wage(double类型),受雇日期hiredate(String类型);
(3)Faculty类中的属性有:学位degree(String类型),级别level(String类型);
(4)Staff类中的属性有:职务称号duty(String类型)。
public class Person {
private String name;
private String address;
private String telphone;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getTelphone() {
return telphone;
}
public void setTelphone(String telphone) {
this.telphone = telphone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
} }
public class Employee extends Person {
private String office;
private double wage;
private String hiredate;
public String getOffice() {
return office;
}
public void setOffice(String office) {
this.office = office;
}
public double getWage() {
return wage;
}
public void setWage(double wage) {
this.wage = wage;
}
public String getHiredate() {
return hiredate;
}
public void setHiredate(String hiredate) {
this.hiredate = hiredate;
} }
public class Faculty extends Employee{
private String degree;
private String level;
public String getDegree() {
return degree;
}
public void setDegree(String degree) {
this.degree = degree;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
} }
public class Staff extends Employee {
private String duty; public String getDuty() {
return duty;
} public void setDuty(String duty) {
this.duty = duty;
} }
测试:
public class F {
public static void main(String[] args) {
Faculty a=new Faculty();
a.setName("张三");
a.setTelphone("123456788");
a.setDegree("本科");
a.setLevel("一级");
a.setEmail("12345877@qq.com");
System.out.println("员工姓名:"+a.getName()+" 电话"+a.getTelphone()+
" 学位"+a.getDegree()+" 级别"+a.getLevel()+" 邮箱"+a.getEmail());
Employee b=new Employee();
b.setName("张三");
b.setTelphone("123456788");
b.setEmail("12345877@qq.com");
b.setOffice("A座407");
b.setWage(20000);
System.out.println("员工姓名:"+b.getName()+" 电话"+b.getTelphone()+
" 邮箱"+a.getEmail()+" 办公室"+b.getOffice()+" 工资"+b.getWage());
}
}
2、编写一个Car类,具有String类型的属性品牌,具有功能drive;定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速;定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特性。
public class Car {
private String pinpa; //品牌属性
private double sudu; public String getPinpa() {
return pinpa;
} public void setPinpa(String pinpa) {
this.pinpa = pinpa;
} public double getSudu() {
return sudu;
} public void setSudu(double sudu) {
this.sudu = sudu;
} public String drive(){
return "汽车已启动!";
} }
public class Aodi extends Car{
private double jiage;
private String xinghao; public double getJiage() {
return jiage;
} public void setJiage(double jiage) {
this.jiage = jiage;
} public String getXinghao() {
return xinghao;
} public void setXinghao(String xinghao) {
this.xinghao = xinghao;
} public double biansu(){
double sudu=super.getSudu()+10;
return sudu;
} }
public class Benchi extends Aodi{
public double biansu(){
double sudu=super.getSudu()+20;
return sudu;
} }
测试:
public class E {
public static void main(String[] args){
Aodi aodi=new Aodi();
aodi.setJiage(500000);
aodi.setXinghao("奥迪A6");
System.out.println("奥迪车的型号是:"+aodi.getXinghao()+" 价格是:"+aodi.getJiage());
System.out.println(aodi.drive());
System.out.println("启动后的速度为:"+aodi.biansu());
Benchi benchi=new Benchi();
benchi.setJiage(800000);
benchi.setXinghao("奔驰2000");
System.out.println("奔驰车的型号是:"+benchi.getXinghao()+" 价格是:"+benchi.getJiage());
System.out.println(benchi.drive());
System.out.println("启动后的速度为:"+benchi.biansu()); }
}
3、按要求编写一个Java应用程序:
(1)编写一个矩形类Rect,包含:
两个属性:矩形的宽width;矩形的高height。
两个构造方法:
1.一个带有两个参数的构造方法,用于将width和height属性初化;
2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。
两个方法:
求矩形面积的方法area()
求矩形周长的方法perimeter()
(2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用
矩形的左上角坐标来标识,包含:
添加两个属性:矩形左上角坐标startX和startY。
两个构造方法:
带4个参数的构造方法,用于对startX、startY、width和height属性初始化;
不带参数的构造方法,将矩形初始化为左上角坐标、长和宽都为0的矩形;
添加一个方法:
判断某个点是否在矩形内部的方法isInside(double x,double y)。如在矩形内,返回true, 否则,返回false。
提示:点在矩形类是指满足条件:x>=startX&&x<=(startX+width)&&y<startY&&y>=(startY-height)
(3)编写PlainRect类的测试程序创建一个左上角坐标为(10,10),长为20,宽为10的矩形对象;计算并打印输出矩形的面积和周长;判断点(25.5,13)是否在矩形内,并打印输出相关信息。
public class Rect {
//声明属性
private double width;
private double height;
//带参数构造方法
public Rect(double width,double height){
this.width=width;
this.height=height;
}
//无参的构造方法
public Rect(){
this.width=10;
this.height=10;
}
//成员方法 周长
public double perimeter(){
double perimeter;
perimeter=(width+height)*2;
return perimeter;
}
//成员方法 面积
public double area(){
double area;
area=width*height;
return area;
}
//getter/setter方法
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}public class PlainRect extends Rect {//声明属性
private int startX;
private int startY;
//含参构造方法
public PlainRect(int startX,int startY,double width,double height){
super(width,height); //调用父类构造方法
this.startX=startX;
this.startY=//不含参构造方法
public PlainRect(){
super(0,0);
this.startX=0;
this.startY=0;
}
//成员方法 判断点与矩形位置
public boolean isInside(double x,double y){return x>=startX&&x<=(startX+getWidth())&&y<startY&&y>=(startY-getHeight());
}
}
public class TestPlainRect { public static void main(String[] args) {
//创建矩形
PlainRect rect =new PlainRect(10,10,20,10);
//打印输出
System.out.println("长为20,宽为10的矩形的面积是:"+rect.area());
System.out.println("长为20,宽为10的矩形的周长是:"+rect.perimeter());
if(rect.isInside(25.5, 13)==true){
System.out.println("点(25.5,13)在矩形内");
}
else{
System.out.println("点(25.5,13)不在矩形内");
}
} }
java继承3个小题的更多相关文章
- 牛客网 Java 工程师能力评估 20 题 - 详解
牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...
- Java—继承、封装、抽象、多态
类.对象和包 1) 面向对象编程(Object Oriented Programming ,简称 OOP):20世纪70年代以后开始流行. 2) 结构化编程与面向对象编程的区别: A. 在结构化编程中 ...
- java 继承、重载、重写与多态
首先是java 继承.重载和重写的概念 继承: 继承的作用在于代码的复用.由于继承意味着父类的所有方法亦可在子类中使用,所以发给父类的消息亦可发给衍生类.如果Person类中有一个eat方法,那么St ...
- 学习博客之Java继承多态接口
这一篇博客主要是对软工前一阶段学习的总结,主要是对Java的学习总结,包括三部分:Java的继承.多态和接口 Java的继承 继承是面向对象的三大特性之一,能够实现软件的复用. Java子类继承父类的 ...
- 【笔试题】Java 继承知识点检测
笔试题 Java 继承知识点检测 Question 1 Output of following Java Program? class Base { public void show() { Syst ...
- java 开发面试题小整理(一)
本篇文档将持续更新,有基础滴,也有深层次的,谢谢! 1.看下面的程序是否有问题,如果有问题,请指出并说明理由. * byte b1 = 3; * byte b2 = 4; * byte b3 = b1 ...
- 深入理解java继承从“我爸是李刚”讲起
目录 1.继承的概述 2.关于继承之后的成员变量 3.关于继承之后的成员方法 4.关于继承之后的构造方法 5.关于继承的多态性支持的例子 6.super与this的用法 前言 本文主要多方面讲解jav ...
- Java继承之方法重写
目录 Java继承之方法重写 代码体现 概念 注意事项 "两同两小一大" 其他注意点 重写与重载 @Override注解 Java继承之方法重写 在Java继承中,子类可以获得父类 ...
- 乐字节Java继承|方法重写、super和final关键字
大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean.继承与权限修饰,也是属于Java继承的,今天继续Java继承. 一. 方法的重写 父类不满足子类的要求,按需改写.注意 方法签名 ...
随机推荐
- 清除SQLServer日志的两种方法
日志文件满而造成SQL数据库无法写入文件时,可用两种方法:一种方法:清空日志.1.打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG2.再打开企业管理器--右键 ...
- 如果页面引用了外部JS代码,会被IE缓存的解决方法
在使用jquery时特别常见,明明修改的js,但是经常不生效,因为缓存,解决办法就是清除ie缓存,每次去点ie选项,太麻烦,网上有人用批处理去,还是每次去点,在页面中加入下面几行,就可以禁用缓存 &l ...
- POJ3694 Network
题目大意:已知连通图G有N个点m条无向边,有Q次操作,每次操作为增加一条边,问每次操作后图上有几个桥. 如果添加一条边进行Tarjin搜索一次时间复杂度为m*m*q很大,会超时.真的超时,我试过.看了 ...
- 记一次IIS Express 之经典模式与集成模式切换
Visual Studio 视图 --> 属性窗口. 或者 选中项目 F4 弹出项目的属性窗口进行切换设置..
- iOS AFNetworking “Request failed: unacceptable content-type: text/html”问题
使用AFNetworking出现报错: error=Error Domain=com.alamofire.error.serialization.response Code=-1016 "R ...
- 2016/10/28 很久没更了 leetcode解题 3sum
15. 3Sum Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Fi ...
- 从DNS配置
从服务器可以从主服务器上抓取指定的区域数据文件起到备份解析记录和负载均衡的作用. 主DNS服务器IP:192.168.16.20 从DNS服务器IP:192.168.16.30 1,修改主服务器区域配 ...
- IOS开发 程序关闭状态接通知
- SparkContext的初始化(叔篇)——TaskScheduler的启动
<深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...
- maven 配置篇 之pom
maven 配置篇 之pom.xml(一) 博客分类: pm mavenXML配置管理项目管理junit 说完了settings.xml配置,下来说一下maven2的主要配置pom.xml ...