继承作业0920
22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。
package com.Jicheng0920.hry; public class A { //A题里只有方法 public void showA() { System.out.println("abcd"); } }
package com.Jicheng0920.hry; public class B extends A { public void showA() { System.out.println("abcd"); } //新增方法 public void showB() { System.out.println("abcd"); } }
package com.Jicheng0920.hry; //编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B, //子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB //输出大写的英文字母表。最后编写主类C,在主类的main方法。 public class ZhuleiC { public static void main(String[] args) { // TODO 自动生成的方法存根 //调用 A a1=new A(); a1.showA(); B b1=new B(); b1.showA(); b1.showB(); System.out.println("ABCD"); }
23.实现一个名为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类型)。
package com.Jicheng0920.hry; //属性 姓名name(String类型),地址address(String类型), //电话号码telephone(String类型)和电子邮件地址email(String类型); public class Person1 { String name; String address; String telephone; String email; }
package com.Jicheng0920.hry; //Employee类中的属性有:办公室office(String类型),工资wage(double 类型), //受雇日期hiredate(String类型); public class Employee extends Person1 { String office; double wage; String hiredate; }
package com.Jicheng0920.hry; //Employee类中的属性有:办公室office(String类型),工资wage(double 类型), //受雇日期hiredate(String类型); public class Faculty extends Employee
{ String office; double wage; String hiredate; }
package com.Jicheng0920.hry; //Staff类中的属性有:职务称号duty(String类型)。 public class Staff extends Employee
{ String duty; }
24.编写一个Car类,具有String类型的属性品牌,具有功能drive; 定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速; 定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特 性。
package com.Jicheng0920.hry; //编写一个Car类,具有String类型的属性品牌,具有功能drive; //定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速; //定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特 性。 public class Car { String pinpai; public void drive() { } }
package com.Jicheng0920.hry; //定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速; public class Aodi extends Car { //属性 public double jiage; public String xinghao; public double sudu; //方法 public Aodi(double jg,String xh,double sd) { this.jiage=jg; this.xinghao=xh; this.sudu=sd; System.out.println("奥迪价格为"+jg+"型号为"+xh+"速度为"+sd); } double setSudu(double s) { sudu+=s;//写sd+=s报错 System.out.println("变速为"+sudu);//写“变速为”+sd报错 return sudu;//写sd报错 } }
package com.Jicheng0920.hry; //定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速; public class Benchi extends Car { public double jiage; public String xinghao; public double sudu; //方法 public Benchi(double jg,String xh,double sd) { this.jiage=jg; this.xinghao=xh; this.sudu=sd; System.out.println("奔驰价格为"+jg+"型号为"+xh+"速度为"+sd); } double setSudu(double s) { sudu+=s;//写sd+=s报错 System.out.println("变速为"+sudu);//写“变速为”+sd报错 return sudu;//写sd报错 } }
package com.Jicheng0920.hry; public class E { public static void main(String[] args) { // TODO 自动生成的方法存根 Aodi x=new Aodi(300000,"A6",40);//(价格,型号,速度) x.setSudu(40); Benchi y=new Benchi(350000,"B3",40); y.setSudu(40); } }
25.按要求编写一个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)是否在矩形内,并打印输出相关信息。
package com.Jicheng0920.hry; public class Rect { //属性,打好了高和宽属性,选择源代码生成getter setter。 private int height=10;//设置了高、宽的默认值是10,10 private int width=10; public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } //有参的构造方法 //菜单源代码中的使用字段生成构造函数 public Rect(int height, int width) { super(); this.height = height; this.width = width; } //无参的构造方法 //菜单源代码中的使用字段生成构造函数,删掉参数,赋值 public Rect() { super(); this.height = 10; this.width = 10; } //面积 public int area() { return this.height*this.width; } //周长 public int perimeter() { return (this.height+this.width)*2; } }
package com.Jicheng0920.hry; //具有确定位置的矩形类 public class PlainRect extends Rect{ private int startX;//x y不赋值,默认为0 private int startY; public int getStartX() { return startX; } public void setStartX(int startX) { this.startX = startX; } public int getStartY() { return startY; } public void setStartY(int startY) { this.startY = startY; } //有参,源码生成字段构造函数下选择Rect(int,int),就可以生成四个参数的 public PlainRect(int height, int width, int startX, int startY) { super(height, width); this.startX = startX; this.startY = startY; } //无参 public PlainRect() { super(0,0);//直接调,赋值xy为00 //方法2用this(0,0,0,0); } /*** * 判断点是否在矩形内部 * * @param x 点的x坐标 * @param y 点的y坐标 * * @return是否在举矩形内部 */ public boolean isInside(double x,double y) { return x>=startX&&x<=(startX+getWidth())&&y<startY&&y>=(startY-getHeight()); } }
package com.Jicheng0920.hry; public class TestPlainRect { public static void main(String[] args) { // TODO 自动生成的方法存根 PlainRect pr=new PlainRect(10,20,10,10); System.out.println("矩形的面积="+pr.area()); System.out.println("矩形的周长="+pr.perimeter()); System.out.println("点是否在矩形内部:"+pr.isInside(25.5, 13)); //pr.isInside(25.5, 13) 不大于30,不大于10例如改为(29,9)为true } }