Java全栈基础知识汇总6.2(类和对象)

1. 通过Idea创建一个名为Homework09的模块, 在com.hualan包里创建一个ClassTest类, 在类的main方法中测试下面编写的类(创建对象, 访问属性, 访问方法):

(1) 定义一个猫类(Cat), 包含颜色(color), 姓名(name)属性, 猫具有吃饭(eat), 睡觉(sleep),抓老鼠(catchMouse)的功能.方法中只需要做输出即可.例如: eat功能 输出"xxx正在吃鱼", xxx是猫的name

(2) 定义一个火车票类(Ticket), 包含出发站(startStation), 到达站(stopStation), 出发时间(startTime), 身份证号(id), 票价(price), 座位号(seat), 车次(trainNumber)属性, 火车票类包含一个打印火车票信息的方法printTicketInfo.

(3) 定义一个点类(Point), 包含属性 x 和 y. 点类包含如下方法: 打印点的坐标信息的方法 printPointInfo; 计算当前点和另外一个点的距离的方法distanceTodistanceTo方法包含一个Point类型的参数, 返回一个double类型的距离.即 public double distanceTo(Point p)distanceTo方法看似只有一个Point,没有办法计算距离,实际上this也是一个Point。计算this和p之间的距离开方使用 Math.sqrt(xxx), 其中xxx是要开方的数, 本方法返回一个double类型的结果

(4) 定义一个圆类Circle, 包含圆心center(Point类型), 半径r, 包含如下方法: 计算圆的周长的方法perimeter, 计算圆的面积的方法area, 一个点Point是否在圆内部public boolean containsPoint(Point p); 当前圆(this)是否和另外一个圆相交, public boolean isIntersect(Circle c); 相交返回true, 不相交返回false圆心center使用上一题定义好的Point类作为类型判断圆是否相交的思路是: 圆心之间的距离 是否小于 半径之和。上一题中的Point类已经有计算当前点和另外一个点的距离的方法distanceTo,两个圆心就是我们的两个点二。

拓展作业(选做)

定义一个矩形类(Rectangle), 包含一个起始点(矩形左上角的点)startPoint, 宽(width), 高(height)属性. 矩形类具有如下方法: 计算面积的方法area, 计算周长的方法perimeter, 获取矩形中心点的方法center(此方法的返回值类型是Point), 打印矩形信息的方法printRectangleInfo, 矩形是否是正方形的方法isSquare, 如果是正方形返回true, 如果不是返回false.startPoint的类型是Point坐标系在左上角

package com.hualan;

public class Cat {
    private String color;
    private String name;

    public Cat(String color, String name) {
        this.color = color;
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public void eat(){
        System.out.println(name+"正在吃鱼");
    }
    public void sleep(){
        System.out.println(name+"正在睡觉");
    }
    public void catchMouse(){
        System.out.println(name+"正在抓老鼠");
    }
}
package com.hualan;

public class Ticket {
    private String startStation;
    private String stopStation;
    private String startTime;
    private String id;
    private double price;
    private int seat;
    private String trainNumber;

    public Ticket(String startStation, String stopStation, String startTime, String id, double price, int seat, String trainNumber) {
        this.startStation = startStation;
        this.stopStation = stopStation;
        this.startTime = startTime;
        this.id = id;
        this.price = price;
        this.seat = seat;
        this.trainNumber = trainNumber;
    }

    public String getStartStation() {
        return startStation;
    }

    public void setStartStation(String startStation) {
        this.startStation = startStation;
    }

    public String getStopStation() {
        return stopStation;
    }

    public void setStopStation(String stopStation) {
        this.stopStation = stopStation;
    }

    public String getStartTime() {
        return startTime;
    }

    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getSeat() {
        return seat;
    }

    public void setSeat(int seat) {
        this.seat = seat;
    }

    public String getTrainNumber() {
        return trainNumber;
    }

    public void setTrainNumber(String trainNumber) {
        this.trainNumber = trainNumber;
    }
    public void printTicketInfo(){
        System.out.println("火车票信息如下:");
        System.out.println("出发站:"+startStation+"\n" +"到达站:"+stopStation+"\n " +"出发时间:"+startTime+"\n " +"身份证号:"+id+"\n " +"票价:"+price+"\n "+"座位号:"+seat+"\n " +"车次:"+trainNumber);
    }
}
package com.hualan;

public class Point {
    private double x;
    private double y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public double getX() {
        return x;
    }

    public void setX(double x) {
        this.x = x;
    }

    public double getY() {
        return y;
    }

    public void setY(double y) {
        this.y = y;
    }
    public double distanceTo(Point p){
        return Math.sqrt((this.x-p.getX())*(this.x-p.getX())+(this.y-p.getY())*(this.y-p.getY()));
    }
}
package com.hualan;

public class Circle {
    private Point center;
    private double r;

    public Circle(Point center, double r) {
        this.center = center;
        this.r = r;
    }

    public Point getCenter() {
        return center;
    }

    public void setCenter(Point center) {
        this.center = center;
    }

    public double getR() {
        return r;
    }

    public void setR(double r) {
        this.r = r;
    }

    public double permeter(){
        return 2*3.14*this.r;
    }
    public double area(){
        return 3.14*this.r*this.r;
    }
    public boolean containsPoint(Point p){
        double distance= center.distanceTo(p);
        return distance<=r;
    }
    public boolean isIntersect(Circle circle2){
        double distance= center.distanceTo(circle2.center);
        double s=this.r+ circle2.r;
        return distance<s;
    }
}
package com.Test;

import com.hualan.*;

public class Test {
    public static void main(String[] args) {
        //定义一个猫类(Cat), 包含颜色(color), 姓名(name)属性, 猫具有吃饭(eat), 睡觉(sleep),抓老鼠(catchMouse)的功能.
        Cat cat=new Cat("黑色","蒜蒜");
        System.out.println(cat.getName()+"是猫的名字"+"\n"+"猫的颜色"+cat.getColor());
        cat.eat() ;
        cat.sleep();
        cat.catchMouse();
        System.out.println();
        //定义一个火车票类(Ticket), 包含出发站(startStation),  到达站(stopStation), 出发时间(startTime), 身份证号(id), 票价(price), 座位号(seat), 车次(trainNumber)属性, 火车票类包含一个打印火车票信息的方法printTicketInfo
        Ticket ticket=new Ticket("南京","上海","8:00","41132220020721",135.0,18,"z165");
        ticket.printTicketInfo();
        System.out.println();
        //) 定义一个点类(Point), 包含属性 x 和 y. 点类包含如下方法: 打印点的坐标信息的方法 printPointInfo;  计算当前点和另外一个点的距离的方法distanceTo
        Point p1=new Point(5.0,10.0);
        Point p2=new Point(10.0,20.0);
        /*double d=Math.sqrt((p2.getX()- p1.getX())*(p2.getX()- p1.getX())+ (p2.getY()- p1.getY())*(p2.getY()- p1.getY()));
        System.out.println("两点之间的距离为"+d);*/
        double s= p2.distanceTo(p1);
        System.out.println("两点之间的距离为"+s);
        System.out.println();
        // 定义一个圆类Circle, 包含圆心center(Point类型), 半径r, 包含如下方法: 计算圆的周长的方法perimeter, 计算圆的面积的方法area, 一个点Point是否在圆内部public boolean containsPoint(Point p); 当前圆(this)是否和另外一个圆相交, public boolean isIntersect(Circle c); 相交返回true, 不相交返回false
        /*Circle circle=new Circle(0,1);*/
        Point center1=new Point(0,0);
        Circle circle1=new Circle(center1,1.0);
        System.out.println("circle1的周长和面积分别为:"+circle1.permeter()+" "+circle1.area());

        Point p=new Point(0,2);
        System.out.println("点Point是否在圆内:"+circle1.containsPoint(p));

        Point center2=new Point(0,1);
        Circle circle2=new Circle(center1,1.0);
        System.out.println("两个圆是否相交:"+circle1.isIntersect(circle2));
        System.out.println();

        //定义一个矩形类(Rectangle), 包含一个起始点(矩形左上角的点)startPoint, 宽(width), 高(height)属性. 矩形类具有如下方法: 计算面积的方法area, 计算周长的方法perimeter, 获取矩形中心点的方法center(此方法的返回值类型是Point), 打印矩形信息的方法printRectangleInfo, 矩形是否是正方形的方法isSquare, 如果是正方形返回true, 如果不是返回false.
        Point startpoint=new Point(0,0);
        Rectangle rectangle=new Rectangle(startpoint,1,2);
        /*System.out.println("矩形的面积为:"+rectangle.area());
        System.out.println("矩形的周长为:"+rectangle.perimeter());
        System.out.println("矩形中心点为:("+ (startpoint.getX()+ rectangle.getWidth()/2)+","+(startpoint.getY()+ rectangle.getHeight()/2)+")");
        System.out.println("矩形是否为正方形:"+rectangle.isSquare());
        System.out.println();*/
        rectangle.printRectangleInfo();

    }
}

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值