java 继承练习题8

按要求编写一个Java应用程序:

(1)编写一个矩形类Rect,包含:

两个protected属性:矩形的宽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 {
    protected double width;
    protected double height;
    Rect (double width,double height)
    {
        this.height=height;
        this.width=width;
    }
    Rect ()
    {
        width=0;
        height=0;
    }
    public void area()
    {
        double a;
        a=width*height;
        System.out.println("矩形的面积是"+a);
    }
    public void perimeter()
    {
        double a;
        a=width*2+height*2;
        System.out.println("矩形的周长是"+a);
    }
public class PlainRect extends Rect {
    private double startX;
    private double startY;
    public double getStartX() {
        return startX;
    }
    public void setStartX(double startX) {
        this.startX = startX;
    }
    public double getStartY() {
        return startY;
    }
    public void setStartY(double startY) {
        this.startY = startY;
    }
    PlainRect(double width,double height,double startX,double startY)
    {
        this.width=width;
        this.height =height;
        this.startX=startX;
        this.startY=startY;
    }

    PlainRect()
    {
        width=0;
        height=0;
        startX=0;
        startY=0;
    }
    public boolean  isInside(double x,double y)
    {
        if(x>=startX&&x<=(startX+width)&&y<startY&&y>=(startY-height))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
public class CeshiPlainRect {

    public static void main(String[] args) {
        PlainRect p=new PlainRect(10,20,10,10);
        p.area();
        p.perimeter();
        System.out.println(p.isInside(25.5, 13));

    }

}

时间: 2024-07-31 14:34:52

java 继承练习题8的相关文章

java 继承练习题2

创建如下三个类:(People类中的三个方法分别输出一些信息,ChinaPeople 和AmericanPeople类重写父类的三个方法). package com.hanqi; public class People { private double height; private double weight; public double getHeight() { return height; } public void setHeight(double height) { this.hei

java 继承练习题3

写一个Java应用程序,该程序包括3个类: A类.B类和主类E.其中 类B是类A的子类,在子类B中新增了成员变量和成员方法,并且隐藏了父类 A的成员变量和重写了父类A的成员方法.在主类E的main方法中,创建类B 的对象并赋给父类A的对象a,使用上转型对象a来测试上转型对象的一些特性. public class A { public int a; public void a1() { System.out.println("这是A的一个方法"); } } package com.han

java 继承练习题4

编写一个Java应用程序,该程序包括3个类:Monkey类.People类和主类 E.要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public void speak() 方法,在speak方法中输出“咿咿呀呀......”的信息. (2)People类是Monkey类的子类,在People类中重写方法speak(),在speak方法 中输出“小样的,不错嘛!会说话了!”的信息. (3)在People类中新增方法void think(),在think方

java 继承练习题5

编写一个类A,该类创建的对象可以调用方法f输出小写的英文字母表.然 后再编写一个A类的子类B,要求子类B必须继承类A的方法f(不允许重写), 子类B创建的对象不仅可以调用方法f输出小写的英文字母表,而且可以调用子 类新增的方法g输出大写的英文字母表.最后 编写主类C,在主类的main方法 中测试类A与类B. public class A { public void f() { System.out.println("abcdefghijklmnopqrstuvwxyz"); } } p

Java继承 练习题

第一题 /* 看程序写结果: A:成员变量 就近原则 B:this和super的问题 this访问本类的成员 super访问父类的成员 C:子类构造方法执行前默认先执行父类的无参构造方法 D:一个类的初始化过程 成员变量进行初始化 默认初始化 显示初始化 构造方法初始化     用参数去调用构造函数就是显式初始化,没有参数就是默认初始化,表现为直接声明对象和数组 所以执行父类无参构造方法前会先执行成员变量的初始化,public int num = 10;,再执行无参构造方法,同理,执行完父类无参

java 继承练习题1

package com.lianxi; public class Instrument { public void play() { System.out.println("弹奏乐器"); } } package com.lianxi; public class Wind extends Instrument { public void play() { System.out.println("弹奏Wind"); } public void play2() { Sy

java 继承练习题7

编写一个Car类,具有final类型的属性品牌,具有功能drive: 定义其子类Aodi和Benchi,具有属性:价格.型号:具有功能:变速: 定义主类E,在其main方法中分别创建Aodi和Benchi的对象并测试对象的特 性. public class Car { private final String Pinpai=""; public String getPinpai() { return Pinpai; } public void drive() { System.out.

java继承和多态

java方法直接调用原理推测 有错误还望指正 当直接调用某对象的某方法时  会更具该对象获取到类信息对象   在从类信息对象中找到该方法 没找到 获取父类信息对象继续查找 找到了执行  jdk距离实现是通过反射还是其它? 如果按以上原理    以下情况解释不通 创建一子类对象  赋值给一父类指针变量  通过父类指针变量掉run方法   run方法在父类或子类中为私有  这种情况调用的是父类的run方法 并非子类的run方法 反射jar包 package extend; import org.ju

Java继承,多态,组合应用

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