Java,Python,Scala比较(二)类与继承

简介: UML图如下: 完整的Java代码如下: SimpleGeometricObject.javapublic class SimpleGeometricObject { private String col...

UML图如下:
这里写图片描述
完整的Java代码如下:
SimpleGeometricObject.java

public class SimpleGeometricObject {
    private String color = "white";
    private boolean filled;
    private java.util.Date dateCreated;

    /**Construct a default geometric object */
    public SimpleGeometricObject(){
        dateCreated = new java.util.Date();
    }

    /**Construct a geometric object with the specified color
     * and filled value*/
    public SimpleGeometricObject(String color, boolean filled) {
        dateCreated = new java.util.Date();
        this.color = color;
        this.filled = filled;
    }

    /**Return color*/
    public String getColor() {
        return color;
    }

    /**set a new color*/
    public void setColor(String color) {
        this.color = color;
    }

    /**Return filled. Since filled is boolean,
     * its better method is named isFilled*/
    public boolean isFilled() {
        return filled;
    }

    /**Set a new filled*/
    public void setFilled(boolean filled) {
        this.filled = filled;
    }

    /**Get dateCreated*/
    public java.util.Date getDateCreated(){
        return dateCreated;
    }

    /**Return a string representation of this object*/
    public String toString() {
        return "created on "+dateCreated+"\ncolor: "+color+" and filled: "+filled;
    }
}

CircleFromSimpleGeometricObject.java

public class CircleFromSimpleGeometricObject extends SimpleGeometricObject{
    private double radius;

    public CircleFromSimpleGeometricObject() {}

    public CircleFromSimpleGeometricObject(double radius) {
        this.radius = radius;
    }

    public CircleFromSimpleGeometricObject(double radius, String color, boolean filled) {
        super(color, filled);
        this.radius = radius;   
    }

    /**Return radius*/
    public double getRadius() {
        return radius;
    }

    /**Set a new radius*/
    public void setRadius(double radius) {
        this.radius = radius;
    }

    /**Return area*/
    public double getArea() {
        return radius*radius*Math.PI;
    }

    /**Return diameter*/
    public double getDiameter() {
        return 2*radius;
    }

    /**Return perimeter*/
    public double getPerimeter() {
        return 2*radius*Math.PI;
    }

    /**Return the circle info*/
    public void printCircle() {
        System.out.println("The circle is created "+getDateCreated()+" and the radius is "+radius);
    }   
}

RectangleFromSimpleGeometricObject.java

public class RectangleFromSimpleGeometricObject extends SimpleGeometricObject{
    private double width;
    private double height;

    public RectangleFromSimpleGeometricObject() {}

    public RectangleFromSimpleGeometricObject(double width, double height) {
        this.width = width;
        this.height = height;
    }

    public RectangleFromSimpleGeometricObject(double width, double height, String color, boolean filled) {
        super(color, filled);
        this.width = width;
        this.height = height;
    }

    /**Return width*/
    public double getWidth() {
        return width;
    }

    /**Set a new width*/
    public void setWidth(double width) {
        this.width = width;
    }

    /**Return height*/
    public double getHeight() {
        return height;
    }

    /**Set a new width*/
    public void setHeight(double height) {
        this.height=height;
    }   

    /**Return area*/
    public double gerArea() {
        return width*height;
    }

    /**Return perimeter*/
    public double getPerimeter() {
        return 2*(width+height);
    }
}

Test.java

public class Test{
    public static void main(String[] args){
        CircleFromSimpleGeometricObject circle = new CircleFromSimpleGeometricObject(1,"red", true);
        System.out.println("A circle "+circle.toString());
        System.out.println("The color is "+circle.getColor());
        System.out.println("The radius is "+circle.getRadius());
        System.out.println("The area is "+circle.getArea());
        System.out.println("The diameter is "+circle.getDiameter());

        RectangleFromSimpleGeometricObject rect = new RectangleFromSimpleGeometricObject(2,4);
        System.out.println("\nA rectangle is "+rect.toString());
        System.out.println("The area is "+rect.gerArea());
        System.out.println("The perimeter is "+rect.getPerimeter());
    }
}

完整的Python代码如下:

import math
import datetime

class SimpleGeometricObject(object):
    def __init__(self, color, filled):
        self.__color = color
        self.__filled = filled 
        self.__date = datetime.datetime.now()

    def getColor(self):
        return self.__color

    def setColor(self, color):
        self.__color = color

    def isFilled(self):
        return self.__filled

    def setFilled(self, filled):
        self.__filled = filled

    def getDateCreated(self):
        return self.__date.strftime("%Y/%m/%d/%H:%M")

    def __str__(self):
        return  "is created on "+self.getDateCreated()+", color: "+self.__color\
                +" and filled: "+str(self.__filled)

class CircleFromSimpleGeometricObject(SimpleGeometricObject):
    def __init__(self, color, filled, radius):
        super(CircleFromSimpleGeometricObject, self).__init__(color, filled)
        self.__radius = radius

    def getRadius(self):
        return self.__radius

    def setRadius(self, radius):
        self.__radius = radius

    def getArea(self):
        return self.__radius*self.__radius*math.pi

    def getPerimeter(self):
        return 2*self.__radius*math.pi

    def getDiameter(self):
        return self.__radius*2

    def printCircle(self):
        print(self.__str__()+" and the radius is "+str(self.__radius))

class RectangleFromSimpleGeometricObject(SimpleGeometricObject):
    def __init__(self, color, filled, width, height):
        super(RectangleFromSimpleGeometricObject, self).__init__(color, filled)
        self.__width = width
        self.__height = height

    def getWidth(self):
        return self.__width

    def setWidth(self, width):
        self.__width = width

    def getHeight(self):
        return self.__height

    def setHeight(self, height):
        self.__height = height 

    def getArea(self):
        return self.__width * self.__height

    def getPerimeter(self):
        return 2*(self.__width+self.__height)

def main():
    circle = CircleFromSimpleGeometricObject("red", True, 5)
    print("A circle ", circle)
    print("The color is ", circle.getColor())
    print("The radius is %s"%circle.getRadius())
    print("The area is %s"%circle.getArea())
    print("The diameter is %s"%circle.getDiameter())

    rect = RectangleFromSimpleGeometricObject("white", False, 3, 4);
    print("\nA rectangle", rect);
    print("The area is %s"%rect.getArea());
    print("The perimeter is %s"%rect.getPerimeter());

main()

完整的Scala代码如下:

import java.util.Date;
import scala.math._;

object demo extends App {
  class SimpleGeometricObject (private var color:String="white", private var filled:Boolean=false){
    private var dateCreated:java.util.Date = new Date()

    def getColor() = color

    def setColor(color:String) = {this.color = color}

    def isFilled() = filled

    def setFilled(filled:Boolean) = {this.filled = filled}

    def getDateCreated() = dateCreated 

    override def toString()= "created on "+dateCreated+"\ncolor: "+color+" and filled: "+filled
  }

  class CircleFromSimpleGeometricObject(color:String, filled:Boolean, private var radius:Double) extends SimpleGeometricObject(color,filled){
    def this() = this("white", false, 1.0)

    def getRadius() = radius

    def setRadius(radius:Double) = {this.radius = radius}

    def getArea() = radius*radius*Pi

    def getDiameter() = radius*2

    def getPerimeter() = radius*2*Pi

    def printCircle() = {println("The circle is created "+getDateCreated+" and the radius is "+radius)}
  }

  class RectangleFromSimpleGeometricObject(color:String, filled:Boolean, private var width:Double, private var height:Double) extends SimpleGeometricObject(color, filled) {
    def this() = this("white", false, 1.0, 1.0)

    def getWidth() = width

    def setWidth(width:Double) = {this.width = width}

    def getHeight() = height

    def setHeight(height:Double) = {this.height = height}

    def getArea() = width*height

    def getPerimeter() = 2*(width+height)
  }

  var circle = new CircleFromSimpleGeometricObject("red", true, 2.0)
  println("A circle is "+circle.toString())
  println("The color is "+circle.getColor())
  println("The radius is "+circle.getRadius())
  println("The area is "+circle.getArea())
  println("The diameter is "+circle.getPerimeter()) 

  var rect = new RectangleFromSimpleGeometricObject("green", true, 3.0, 4.0)
  println("\nA rectangle is "+rect.toString())
  println("The area is "+rect.getArea())
  println("The perimeter is "+rect.getPerimeter())
}

读者可以自己从上述代码中体验三种语言的相同点与不同之处,显然,Python与Scala语言较为简洁~~



本次分享到此结束,欢迎大家交流~~

目录
相关文章
|
12月前
|
机器学习/深度学习 JSON Java
Java调用Python的5种实用方案:从简单到进阶的全场景解析
在机器学习与大数据融合背景下,Java与Python协同开发成为企业常见需求。本文通过真实案例解析5种主流调用方案,涵盖脚本调用到微服务架构,助力开发者根据业务场景选择最优方案,提升开发效率与系统性能。
2285 0
|
12月前
|
jenkins Shell 测试技术
|
12月前
|
安全 Java 数据建模
Java记录类:简化数据载体的新选择
Java记录类:简化数据载体的新选择
554 101
|
12月前
|
安全 Java 开发者
Java记录类:简化数据载体的新方式
Java记录类:简化数据载体的新方式
440 100
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
696 143
|
11月前
|
存储 Java 索引
用Java语言实现一个自定义的ArrayList类
自定义MyArrayList类模拟Java ArrayList核心功能,支持泛型、动态扩容(1.5倍)、增删改查及越界检查,底层用Object数组实现,适合学习动态数组原理。
461 4
|
11月前
|
IDE JavaScript Java
在Java 11中,如何处理被弃用的类或接口?
在Java 11中,如何处理被弃用的类或接口?
435 5
|
11月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
554 5
|
11月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
499 1
|
11月前
|
Java Go 开发工具
【Java】(8)正则表达式的使用与常用类分享
正则表达式定义了字符串的模式。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
586 1