Java,Python,Scala比较(二)类与继承
来源:互联网 发布:java借书系统介绍文档 编辑:程序博客网 时间:2024/05/18 11:06
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 mathimport datetimeclass 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语言较为简洁~~
本次分享到此结束,欢迎大家交流~~
阅读全文
0 0
- Java,Python,Scala比较(二)类与继承
- Java,Python,Scala比较(三)wordcount
- scala 类与继承
- Java入门(二)类与继承
- Scala继承与Java的区别
- Scala类与对象(二)
- Spark---Scala与Java性能比较
- java基础知识--类与对象、继承(二)
- Java 继承与多态(二)
- Scala类继承与单例对象
- scala 类定义构造函数与继承
- scala-继承与组合
- python 多继承(新式类) 二
- Java 进阶 之 抽象类与接口 比较(二)
- scala学习之scala与java的一些区别(二)
- java,c#,php类与继承简单比较
- Python类与继承
- python与java的 比较
- 讲给Android程序员看的前端教程(33)——Window
- [Leetcode] 451. Sort Characters By Frequency 解题报告
- Sigmoid函数与损失函数求导
- Receiver 分发详解
- 三分钟明白 Activity工作流 -- java运用
- Java,Python,Scala比较(二)类与继承
- [php_12]PHP之Mysql操作php7安装pdo_psql扩展
- C++ Primer 知识点总结 (第三章)
- 每日一练16
- Java Web后端--入职技能任务单(要求说明)☞置顶
- NPOI读取EXCEL到datagridview
- 华为阿里员工下班时间大曝光,看完你就知道差距在哪里了!
- 视频数据处理③:解压H.264视频成YUV源文件
- 华为员工炫富,工作十年,北京两套上海一套房,现金1000万