测试类:主要实现创建新对象,并初始化,然后输出结果。
package lesson2;

public class Demo1 {

public static void main(String[] args) {
Circle c =new Circle(new Point(5,5),5);
c.printLocation();
   System.out.println(c.getArea());
   Rectangle d=new Rectangle(new Point(3,3),new Point(3,6),new Point(6,3));
   d.printLocation();
   System.out.println(d.getArea());
   System.out.println(d.getLength());
   Rhombus e=new Rhombus(new Point(6,6),new Point(4,8),new Point(6,10),new Point(8,8));
   System.out.println(e.getArea());
   System.out.println(e.getLength());
}

}

菱形Rhombus类的实现代码:

//求菱形面积
public class Rhombus extends Shape {
Point c=new Point();
Point d=new Point();

public Rhombus(Point p,Point q,Point c,Point d){
super(p,q);
this.c=c;
this.d=d; //super(location);
}
public double getArea(){
return this.getP().getDistance(c)*this.getQ().getDistance(d);
}
}

矩形Rectangle面积的实现方法

package lesson2;
//自己写个矩形求面积。
public class Rectangle extends Shape {
// private Point b,c;
Point b=new Point();
Point c=new Point();
public  Rectangle(Point location, Point b, Point c){
super(location);
this.b=b;
this.c=c;
}
 
public double getArea(){
 
return this.getLocation().getDistance(b)*this.getLocation().getDistance(c);
}
public double getLength(){
return 2*(this.getLocation().getDistance(b)+this.getLocation().getDistance(c));
}

}

圆Circle面积周长实现的代码。

public class Circle extends Shape{
private double r;
public Circle(Point Location,double r) {
super(Location);/*创建子类的构造函数,必须调用父类的构造函数*/
this.r =r;
 }//圆作为图形的子列。继承点的位置,还有自己半径的属性
public double getArea(){
return 3.14*r*r;
}//yuan自己的行为方法
public double getlength(){
return 2*3.14*r;
}
//java中的继承是全部继承,但是private继承过来后
//不能直接访问,只能通过继承过来的父类的非private函数访问。
public boolean contains(Point p){
return this.getLocation().getDistance(p)<=r;
}
}
/*public void printData(){
super.printData();
System.out.print("半径是"+r);
}//为什么写打印函数,shape 类里需要生成打印方法
*/其他图形你也可以这样写打出边长等

这些图形都是Shape类的子类

public class Shape {
//画图形,必须有一个点,根据此点绘制图形。
  private Point location;
  private Point p,q;
  public Shape(){}
  public Shape(Point location){
 this.location=location;
  }//构造函数初始化。
  
public Point getLocation() {
return location;}
public void setLocation(Point location) {
this.location = location; }

public Shape(Point p,Point q){
this.p=p;
this.q=q;
 }
  
  public Point getP() {
return p;
}
public void setP(Point p) {
this.p = p;
}
public Point getQ() {
return q;
}
public void setQ(Point q) {
this.q = q;
}
//私有属性不能直接访问,只能用Set,get方法实现调用
//set()是给属性赋值的,get()是取得属性值的被设置和存取的属性一般是私有 
  //主要是起到封装的作用,不允许直接对属性操作 ,它必须返回属性类型的值
  public double getArea(){return 0;}//获得面积的方法
  public double getLength(){return 0;}//获得周长
  public void printLocation(){
 //打印方法
 System.out.println("图形位置"+location.getX()+","+location.getY());
  }
/*public void printData() {//为什么需要这个函数,测试用
System.out.println(location.getX()+location.getY());
}*/
public void draw() {
}
}

Shape类的方法构造,必须使用点,所以需要构造一个点类,供Shape调用。两者之间是依赖关系不是继承关系。继承是重写父类的行为。依赖关系只存在属性和方法的调用,

Point 类的属性和方法,比如点的位置,点到点的距离,

public class Point  {

private double x,y;
    public Point(){}//无参构造函数
public Point(double x, double y) {
//super();
this.x = x;
this.y = y;
}
public double getX() {
return x;//同理,私有属性用get set 实现被调用

}public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
public double getDistance(){
return Math.sqrt(x*x+y*y);
}//点的行为无参函数
public double getDistance(Point p){
return Math.sqrt((this.x-p.x)*(this.x-p.x)+(this.y-p.y)*(this.y-p.y));
  
}//构成方法的重载把求两点之间的距离写出来,
  public double getDistance(Point p,Point q){
return Math.sqrt((p.x-q.x)*(p.x-q.x)+(p.y-q.y)*(p.y-q.y));
     }
}

不足之处,请多多指教。

java创建Shape类,求子类circle,圆形rectangle矩形,rhombus菱形的周长和面积相关推荐

  1. java在己有的类创子类怎么创_如何使用Java创建自己的异常子类

    Java不知道学了多少课时了,你知道如何使用Java创建自己的异常子类吗,Java的内置异常处理有哪些常见的错误呢,今天IT培训网小编就来给大家详细介绍下吧: 尽管Java的内置异常处理大多数常见错误 ...

  2. java定义一个类计算圆的半径,C++编程:定义一个圆类要求属性为半径,操作为计算圆的周长和面积...,java编程:定义一个圆类,属性为半径,方法为对输入的半径计...

    导航:网站首页 > C++编程:定义一个圆类要求属性为半径,操作为计算圆的周长和面积...,java编程:定义一个圆类,属性为半径,方法为对输入的半径计 C++编程:定义一个圆类要求属性为半径, ...

  3. 定义一个Traingle类用来刻画“三角形”,要求:Trangle类具有类型为double的三个边以及周长、面积属性,具有一个boolean型的属性,该属性的值为true时代表三个边属性能构成一个三角

    定义一个Traingle类用来刻画"三角形",要求:Trangle类具有类型为double的三个边以及周长.面积属性,具有一个boolean型的属性,该属性的值为true时代表三个 ...

  4. java:键盘录入长方形的长和宽,计算长方形的周长和面积,请使用面向对象的方式解决!

    java:键盘录入长方形的长和宽,计算长方形的周长和面积,请使用面向对象的方式解决! //测试类: public class Test {public static void main(String[ ...

  5. 建立一个Shape类,有Circle(圆形)和Rect(矩形)子类

    Shape类有zhouchang()和area()两种方法. Rect有cha()用于比较长宽的差,若长大于宽输出"长比宽大",否则输出"宽比长大".(正方形) ...

  6. JAVA笔记:shape类(接口,继承,lambda表达式...)

    目录 写一段程序,实现shape面积,并可以对面积大小排序 定义父类shape类,并定义方法Area() 定义第一个子类Circle类 定义第二个子类Rect类 定义接口Comparator,并写入c ...

  7. Java基础篇——类与子类

    1. 什么是类,什么是子类? 类:类是Java程序的基本要素,一个Java应用程序就是由若干个类所构成的.类是Java语言中最重要的"数据类型". 子类:由继承得到的类叫子类. 引 ...

  8. java007如何java创建一个类

    一,编程的一般思路 1,ooa:面向对象分析 2,ood:面向对象设计 3,oop:面向对象编程 4,测试 5,项目交接,给客户演示,演示完了项目就上线运行,运行期间有bug就项目升级(后期维护)-- ...

  9. Java创建student类

    目录 创建包,包名可以自拟,在包中创建student类 创建Penpal类继承student类 在HelloWorld中实现测试 创建一个叫做Student的类: 对象属性:姓名.年龄.性别.身高 对 ...

最新文章

  1. 维护人员工具_防爆配电箱检修规范和维护保养
  2. 微软的DeepSinger产生可以英语和中文唱歌的声音
  3. mysql怎么升级_MySQL UPDATE 更新
  4. Spring_02_AOP初级总结
  5. 和整数相乘_小学数学基础概念归纳总结:整数篇
  6. POJ 3090 (欧拉函数) Visible Lattice Points
  7. android seekbar 圆角,android - 最小或最大时,圆角android seekbar的ui奇怪行为 - 堆栈内存溢出...
  8. 使用Mathcad解受迫振动微分方程并画图
  9. mybatis实现代码自动生成
  10. lgg7刷机包下载_LG G7 恢复Download回官方。
  11. 从零实现一个3D目标检测算法(1):3D目标检测概述
  12. 零基础能不能学计算机专业,零基础能学计算机专业吗?
  13. Bonfire: Falsy Bouncer
  14. csapp bomb lab (《深入理解计算机系统》lab2)
  15. MATLAB | 绘图复刻(二) | 折线图+误差棒+柱状图+散点抖动+灰色背景+图片叠加
  16. st语言 数组的常用方法_LINEST函数使用方法介绍
  17. 神州租车——为用户提供精细化租车服务
  18. 数据中心UPS不间断电源系统架构介绍
  19. 用Matlab作出汽车驱动力图
  20. eclipse相关介绍

热门文章

  1. 关于WBS的一些知识点
  2. LTE学习笔记4之物理层信道与信号
  3. 路由器WiFi密码更改及隐藏操作
  4. 超级电脑可下载人类思想 究竟是福是祸?(
  5. 电感的能量储存在哪里-深度解析(4)
  6. OpenCV 源码中分水岭算法 watershed 函数源码注解
  7. 如何使用WinRAR将一个大文件压缩成多个小的压缩包
  8. Java使用winrar压缩和解压缩文件
  9. 关于YunFile网盘的一些使用技巧与心得
  10. 敏捷物联——引领生产和服务创新