继承(9.20)——————————随堂演练
实现一个名为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 继承; public class Person { //成员变量 public String name ; public String address ; public String telphone ; public String email ; }
package 继承; public class Employee extends Person { // 成员变量 public String office ; public double wage ; public String hiredate ; }
package 继承; public class Faculty extends Employee { public String degree ; public String level ; }
package 继承; public class Staff extends Employee { public String duty ; }
编写一个Car类,具有String类型的属性品牌,具有功能drive;
定义其子类Aodi和Benchi,具有属性:价格、型号;具有功能:变速;
定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特
性。
package 继承; public class Car { //成员变量 public static String logo ; public static String getLogo() { return logo; } public static void setLogo(String Logo) { logo = Logo; } //构造方法 void drive( ) { } }
package 继承; public class Benchi extends Car { //成员变量 public int price ; public String xinghao ; public double speed ; Benchi ( int price , String xinghao , double speed ) { this.price = price ; this.speed = speed ; this.xinghao = xinghao ; } //构造方法 double Sd( double a ) { return a >= 0 ? this.speed + a : this.speed + a ; } }
package 继承; public class Aodi extends Car { //成员变量 public int price ; public String xinghao ; public double speed ; Aodi ( int price , String xinghao , double speed ) { this.price = price ; this.speed = speed ; this.xinghao = xinghao ; } //构造方法 double Sd( double a ) { return a >= 0 ? ( this.speed + a ) : ( this.speed + a ) ; } }
package 继承; public class E { public static void main(String[] args) { Benchi benchi = new Benchi ( 300000 , "A180" , 100 ) ; Benchi.setLogo( "奔驰") ; System.out.println("品牌:"+ benchi.getLogo() + "\t型号:" + benchi.xinghao +"\t价格:" + benchi.price +"元,\t速度:" + benchi.speed+"km/h"); System.out.println("加速30,后速度为:" + benchi.Sd(30) + "km/h"); System.out.println("减速30,后速度为:" + benchi.Sd(-30) + "km/h"); Aodi aodi = new Aodi ( 1000000 , "A8" , 120 ) ; System.out.println("品牌:"+ aodi.getLogo() + "\t型号:" + aodi.xinghao +"\t价格:" + aodi.price +"元,\t速度:" + aodi.speed+"km/h"); System.out.println("加速30,后速度为:" + aodi.Sd(30) + "km/h"); System.out.println("减速30,后速度为:" + aodi.Sd(-30) + "km/h"); } }
按要求编写一个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 继承; public class Rect { //成员变量 public double width ; public double height ; //有参的构造方法 public Rect ( double width , double height ) { this.width = width ; this.height = height ; } //无参的构造方法 public Rect ( ) { this.width = 10.0 ; this.height = 10.0 ; } //构造方法 //面积 public double area( ) { return width * height ; } //周长 public double perimeter( ) { return ( width + height ) * 2 ; } }
package 继承; public class PlainRect extends Rect { //成员变量 public double startX ; public double startY ; //有参构造方法 public PlainRect ( double startX , double startY , double width , double height ) { this.startX = startX ; this.startY = startY ; this.width = width ; this.height = height ; } //无参构造方法 public PlainRect( ) { this.startX = 0 ; this.startY = 0 ; this.width = 0 ; this.height = 0 ; } //添加新的成员方法 public boolean isInside(double x,double y) { if( x>=startX&&x<=(startX+width)&&y<startY&&y>=(startY-height) ) { return true; } else { return false; } } }
package 继承; public class PlainRectCeShi { public static void main(String[] args) { PlainRect a = new PlainRect( 10 , 10 ,20 , 10 ) ; System.out.println( "矩形坐标为:(" + a.startX + "," + a.startY+")" ) ; System.out.println( "矩形的长为:" + a.width + "矩形的高为:" + a.height) ; System.out.println( "矩形的面积为:" + a.area( ) ) ; System.out.println( "矩形的周长为:" + a.perimeter( ) ) ; if( a.isInside( 25.5 , 13 ) == true ) { System.out.println( "这个点在矩形内" ) ; } else { System.out.println( "点(25.5,13)不在矩形内" ) ; } } }