我在程序中使用实现继承,而子类中的方法未在main方法中调用。它显示错误“方法Second中未定义方法getArea()”。 getPerimeter()方法也有同样的问题。
我尝试设置值和更改参数。
package firstproject;
import java.util.Scanner;
import java.util.Date;
import java.util.ArrayList;
public class Second{
public String color="red" ;
public boolean filled;
public Second() {
}
public Second(String tcolor, boolean tfilled) {
tcolor=color;
tfilled=filled;
}
public String getColor() {
return color;
}
public boolean getfilled() {
return filled;
}
public void setColor(String tcolor) {
tcolor=color;
}
public void setFilled(boolean tfilled) {
tfilled=filled;
}
public String toString() {
return "Color is =" +color+ " and it is filled or not = "
+filled;
}
class myclass extends Second {
double s1=1.0;
double s2=1.0;
double s3=1.0;
public myclass(){
}
public myclass(double s4, double s5, double s6) {
s4=s1;
s5=s2;
s6=s3;
}
double gets1() {
return s1;
}
double gets2() {
return s2;
}
double gets3() {
return s3;
}
public void sets1(double s4) {
s4=s1;
}
public void sets2(double s5) {
s5=s2;
}
public void sets3(double s6) {
s6=s3;
}
public double getArea() {
return (s2*s3)/2;
}
public double getPerimeter() {
return s1+s2+s3;
}
}
public static void main(String[] args) {
System.out.println("Enter the three sides = ");
Scanner input=new Scanner(System.in);
int side1=input.nextInt();
int side2=input.nextInt();
int side3=input.nextInt();
Second Triangle= new Second();
System.out.println("Enter the color = ");
String colo=input.next();
System.out.println("The boolean value = ");
String fil =input.next();
System.out.println("The area of the triangle is = "
+Triangle.getArea());
System.out.println("The perimeter of the triangle is = "
+Triangle.getPerimeter());
System.out.println("The color in which it is filled is = "
+Triangle.getColor());
System.out.println("If it is filled or not = "
+Triangle.getfilled());
}
}
It's showing the error "The method getArea() is not defined in type
Second". Also, the same stuff is happening with the getPerimeter()
method. So, I had the question of how to solve the code and is it an
error related to subclass? The question is something like:
(The Triangle class) Design a class named Triangle that extends
GeometricObject. The class contains:
■ Three double data fields named side1, side2, and side3 with
default values
1.0 to denote three sides of the triangle.
■ A no-arg constructor that creates a default triangle.
■ A constructor that creates a triangle with the specified side1,
side2, and
side3.
■ The accessor methods for all three data fields.
■ A method named getArea() that returns the area of this triangle.
■ A method named getPerimeter() that returns the perimeter of this
triangle.
■ A method named toString() that returns a string description for
三角形。 有关计算三角形面积的公式,请参见《编程练习2.15》。 toString()方法的实现如下: 返回“三角形:side1 =“ + side1 +” side2 =“ + side2 + “ side3 =” + side3; 为类Triangle和GeometricObject绘制UML图 并实现类。编写一个测试程序,提示用户输入 三角形的三个边,一个颜色和一个布尔值,以指示是否 三角形被填充。程序应使用以下命令创建一个Triangle对象 边,并使用输入设置颜色和填充属性。该程序 应该显示面积,周长,颜色以及true或false来指示是否 是否被填充。
答案 0 :(得分:1)
以为您在多态性和继承力之间感到困惑。
Java中的继承是一种机制,其中一个对象获取父对象的所有属性和行为。它是OOP(面向对象编程系统)的重要组成部分。
Java继承背后的思想是,您可以创建基于现有类构建的新类。从现有类继承时,可以重用父类的方法和字段。此外,您还可以在当前类中添加新的方法和字段。
继承表示IS-A关系,也称为“父子关系”。
Java中的多态性是一个概念,通过它我们可以以不同的方式执行单个操作。多态性源自两个希腊词:poly和morphs。单词“ poly”表示很多,“ morphs”表示形式。因此,多态性意味着多种形式。
Java中有两种类型的多态:编译时多态和运行时多态。我们可以通过方法重载和方法重写在Java中执行多态。
如果重载Java中的静态方法,则它是编译时多态性的示例。在这里,我们将重点介绍Java中的运行时多态性。
您在这里所做的就是继承。因此,父类的方法属性和方法将继承到子类,并且反之亦然。在您的情况下,Second
是父类,而myClass
是Second
类的子类。由于getArea
是在子类myClass
中定义的,因此父类Second
没有关于getArea
方法的详细信息。因此,您会收到此错误。