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 Person{
    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 F {
    public static void main(String[] args) {
        Faculty a=new Faculty();
        a.setName("张三");
        a.setTelphone("123456788");
        a.setDegree("本科");
        a.setLevel("一级");
        a.setEmail("[email protected]");
        System.out.println("员工姓名:"+a.getName()+" 电话"+a.getTelphone()+
                " 学位"+a.getDegree()+" 级别"+a.getLevel()+" 邮箱"+a.getEmail());
        Employee b=new Employee();
        b.setName("张三");
        b.setTelphone("123456788");
        b.setEmail("[email protected]");
        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=startY;
    }
    //不含参构造方法
    public PlainRect(){
        this.startX=0;
        this.startY=0;
    }
    //成员方法  判断点与矩形位置
    public boolean isInside(double x,double y){
        if(x>=startX&&x<=(startX+getWidth())&&y<startY&&y>=(startY-getHeight())){
            return true;
        }
        else{
            return false;
        }
    }

}
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)不在矩形内");
        }
    }

}

时间: 2024-10-08 06:15:46

java继承3个小题的相关文章

java继承会犯的小错误

注意事项:阅读本文前应该先了解java的继承.本文定位为已经继承基础知识. 一:试图覆盖私有方法 先上代码 1 public class Father { 2 3 private void print() { 4 System.out.println("private print"); 5 } 6 7 public static void main(String[] args) { 8 Father father = new Son(); 9 father.print(); 10 }

java学习中,面向对象的三大特性:封装、继承、多态 以及 super关键字和方法的重写(java 学习中的小记录)

java学习中,面向对象的三大特性:封装.继承.多态 以及 super关键字和方法的重写(java 学习中的小记录) 作者:王可利(Star·星星) 封装     权限修饰符:public 公共的,private 私有的     封装的步骤:          1.使用private 修饰需要封装的成员变量.          2.提供一个公开的方法设置或者访问私有的属性              设置 通过set方法,命名格式:     set属性名();  属性的首字母要大写 访问 通过ge

Java继承,多态,组合应用

继承:  面向对象的三大特征之一:    是类和类之间的一种拓展关系,是一种从一般到特殊的关系;    格式: sub   extends Super,  我们把sub称为子类或者拓展类, 把super称为父类或者基类(超类)   泛化: 把子类中的共性抽取到父类的过程; 特化: 子类在父类的基础之上,拓展自己特有的状态和特征;    Object: 是所有类的直接父类后间接父类;      class  Student{} 等价于  class  Student extends Object{

Java版贪吃蛇小游戏的实现

使用的IDE eclipse JDK版本 1.6 辅助类 Coordinate.java package com.nn.util; /** *坐标点 */ public class Coordinate { public int x; public int y; public Coordinate(int newX, int newY) { x = newX; y = newY; } public boolean equals(Coordinate other) { if (x == other

C++继承与多态编程题

要求编写一个简单的人员信息管理程序,具体要求如下: (1)程序涉及到五个类,分别是employee,technician,salesman,manager,salsemanager.这五个类的关系为:employee是顶层父类,technician,salesman,manager是employee的子类,salsemanager是salesman,manager的子类. (2)employee具有员工号,姓名,收入等属性,有设置姓名,获取姓名,获取员工号,获取收入等函数. (3)technic

java学习中,成员内部类、匿名内部类(java 学习中的小记录)

java学习中,成员内部类.匿名内部类(java 学习中的小记录)作者:王可利(Star·星星) 内部类: 一个类中定义另外一个类,这样的类叫内部类. 内部类的文件名:外部类名$内部类名.class    内部类分两种: 1.成员内部类 如何访问成员内部类:             方式1:外部类中定义一个方法来创建内部类对象,再通过对象进行访问.             方式2:可以直接在其他类中直接创建内部类这个对象,通过对象访问.用点语.                       格式:

java学习中,异常和错误的简介、捕获异常、抛出异常、自定义异常(java 学习中的小记录)

java学习中,异常和错误的简介.捕获异常.抛出异常.自定义异常(java 学习中的小记录)作者:王可利(Star·星星) 异常:(API 的 java.lang 有一个异常,有很多很多) 在Java程序中也会程序出现不正常的情况,这个就叫异常.     Java是面向对象的语言,任何事物都可以用类来描述,同样的异常也是一种事物.Java中提供了很多的异常类.     多个异常堆积起来,就是一个异常体系.   Throwable:是异常类的父类,超类.Exception 异常.error错误.

java学习中,接口的使用(重要,常用知识点)(java 学习中的小记录)

java学习中,接口的使用(重要,常用知识点)(java 学习中的小记录)作者:王可利(Star·星星) 接口(功能:用来添加拓展功能的) 例子:铅笔.带橡皮檫的铅笔. 两个功能:     1.写字......> 铅笔     2.擦字......> 橡皮擦 想法:定义一个铅笔类,定义一个橡皮擦类,定义一个带橡皮擦的铅笔类继承 铅笔类和橡皮擦类 但是java是单继承的.于是就有了解决的方法:接口(可以添加拓展功能) 如:一个铅笔类,给它添加一个接口给它一个拓展类(橡皮擦类) 接口的定义模式 用

深入理解java继承从“我爸是李刚”讲起

目录 1.继承的概述 2.关于继承之后的成员变量 3.关于继承之后的成员方法 4.关于继承之后的构造方法 5.关于继承的多态性支持的例子 6.super与this的用法 前言 本文主要多方面讲解java继承,旨在让初学者通俗易懂,至于"我爸是李刚",反正楼主也不知道谁爸是李刚. @ 1.继承的概述 1.1.继承的由来 至于由来简单一句话:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为. 继承描述的是事物之间的所属关系,这种关系是 is-a