多易javaSE基础 day9 课程日志 继承——存疑

今天继续学习了类的继承,还有静态的相关知识,最后讲了final关键字和单例设计模式.
存疑:静态代码块中的代码是在内存的哪块运行?
子类是否继承了父类的私有字段?

练习的代码如下:

package day08;
/**
 * 按要求编写一个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 Demo2 {
    public static void main(String[] args) {

        PlainRect plainRect = new PlainRect(10, 20, 10, 10);
        plainRect.area();
        plainRect.perimeter();
        boolean inside = plainRect.isInside(25.5, 13);
        if (inside) System.out.println("点在矩形里");
        else System.out.println("点不在矩形里");

    }
}

class Rect {
    private double width;
    private double height;

    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 Rect(double width, double height) {
        this.width = width;
        this.height = height;
    }

    public Rect() {
        width = 10;
        height = 10;
    }

    public void area() {
        System.out.println(this.getHeight() * this.getWidth());
    }

    public void perimeter() {
        System.out.println(2*(this.getHeight() + this.getWidth()));
    }


}

class PlainRect extends Rect {
    private int startX;
    private int startY;

    public PlainRect(double width, double height, int startX, int startY) {
        super(width, height);
        this.startX = startX;
        this.startY = startY;
    }

    public PlainRect() {
        this.startX = 0;
        this.startY = 0;
        super.setHeight(0);
        super.setWidth(0);
    }

    public boolean isInside(double x, double y) {
        if (x >= startX && x <= (startX + super.getWidth()) && y <= startY && y >= (startY - super.getHeight())){
            return true;
        }else
            return false;
    }

}

class SingleEx{
/**
 * 饿汉式
* */
//    private final static SingleEx sx = new SingleEx();
//
//    private SingleEx(){
//
//    }
//    public static SingleEx getSx(){
//        return sx;
//    }

/**
 * 懒汉式
 * */
    private static SingleEx sx;
    private SingleEx(){

    }
    public static SingleEx getSx(){
        if (sx == null) {
             sx=new SingleEx();
        }
            return sx;
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_44855583/article/details/107749087