用JSVA设计一个抽象类Shape,包含面积和周长的area()的方法和perimeter()方法及设置颜色的方法Setcolor() 并利用java多态技术设计其子类Circle类和Triangle的方法
时间: 2024-11-25 13:09:19 浏览: 6
在JavaScript中,我们可以使用ES6的Class语法来创建一个抽象类Shape,并利用多态特性来设计其子类Circle和Triangle。首先,让我们定义Shape抽象类:
```javascript
// 抽象类Shape
class Shape {
constructor(color) {
this.color = color;
}
// 定义抽象方法,需要子类覆盖
area() {
throw new Error("Method 'area' must be implemented by child class.");
}
perimeter() {
throw new Error("Method 'perimeter' must be implemented by child class.");
}
setColor(color) {
this.color = color;
}
}
```
接下来,我们创建两个子类Circle和Triangle,它们分别实现了area()和perimeter()方法:
```javascript
// 子类Circle
class Circle extends Shape {
constructor(radius, color) {
super(color);
this.radius = radius;
}
// 实现area()方法
area() {
return Math.PI * Math.pow(this.radius, 2);
}
// 实现perimeter()方法
perimeter() {
return 2 * Math.PI * this.radius;
}
}
// 子类Triangle
class Triangle extends Shape {
constructor(base, height, color) {
super(color);
this.base = base;
this.height = height;
}
// 实现area()方法
area() {
return 0.5 * this.base * this.height;
}
// 实现perimeter()方法,假设这是一个等腰三角形
perimeter() {
const sideLength = this.calculateSideLength();
return this.base + sideLength + sideLength;
}
// 助手函数计算等腰三角形的边长
calculateSideLength() {
return (Math.sqrt(4 * this.height ** 2 + this.base ** 2)) / 2;
}
}
```
现在你可以实例化这两个类并利用多态特性了:
```javascript
let circle = new Circle(5, "blue");
console.log(circle.area()); // 输出圆的面积
console.log(circle.perimeter());
let triangle = new Triangle(6, 4, "red");
console.log(triangle.area());
console.log(triangle.perimeter());
```
阅读全文