继承(9.20)——————————随堂演练

实现一个名为Person的类和它的子类EmployeeEmployee有两个子类Faculty

Staff

具体要求如下:

1Person类中的属性有:姓名nameString类型),地址addressString类型),

电话号码telphoneString类型)和电子邮件地址emailString类型)

2Employee类中的属性有:办公室officeString类型),工资wagedouble

类型),受雇日期hiredateString类型)

3Faculty类中的属性有:学位degreeString类型),级别levelString类型)

4Staff类中的属性有:职务称号dutyString类型)

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

定义其子类AodiBenchi,具有属性:价格、型号;具有功能:变速;

定义主类E,在其main方法中分别创建AodiBenchi的对象并测试对象的特

性。

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.一个带有两个参数的构造方法,用于将widthheight属性初化;

2.一个不带参数的构造方法,将矩形初始化为宽和高都为10

两个方法:

求矩形面积的方法area()

求矩形周长的方法perimeter()

2)通过继承Rect类编写一个具有确定位置的矩形类PlainRect,其确定位置用

矩形的左上角坐标来标识,包含:

添加两个属性:矩形左上角坐标startXstartY

两个构造方法:

4个参数的构造方法,用于对startXstartYwidthheight属性

初始化;

不带参数的构造方法,将矩形初始化为左上角坐标、长和宽都为0

的矩形;

添加一个方法:

判断某个点是否在矩形内部的方法isInside(double x,double y)。如在矩

形内,返回true, 否则,返回false

  提示:点在矩形类是指满足条件:

x>=startX&&x<=(startX+width)&&y<startY&&y>=(startY-height)

3)编写PlainRect类的测试程序

创建一个左上角坐标为(1010),长为20,宽为10的矩形对象;

计算并打印输出矩形的面积和周长;

判断点(25.513)是否在矩形内,并打印输出相关信息。

 

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

}

 

posted @ 2016-09-20 20:07  丶疏影横斜  阅读(260)  评论(4编辑  收藏  举报