继承中的方法调用遇到问题

时间:2019-09-13 19:56:30

标签: java

我在程序中使用实现继承,而子类中的方法未在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来指示是否     是否被填充。

1 个答案:

答案 0 :(得分:1)

以为您在多态性继承力之间感到困惑。

Java中的

继承是一种机制,其中一个对象获取父对象的所有属性和行为。它是OOP(面向对象编程系统)的重要组成部分。

Java继承背后的思想是,您可以创建基于现有类构建的新类。从现有类继承时,可以重用父类的方法和字段。此外,您还可以在当前类中添加新的方法和字段。

继承表示IS-A关系,也称为“父子关系”。

Java中的

多态性是一个概念,通过它我们可以以不同的方式执行单个操作。多态性源自两个希腊词:poly和morphs。单词“ poly”表示很多,“ morphs”表示形式。因此,多态性意味着多种形式。

Java中有两种类型的多态:编译时多态和运行时多态。我们可以通过方法重载和方法重写在Java中执行多态。

如果重载Java中的静态方法,则它是编译时多态性的示例。在这里,我们将重点介绍Java中的运行时多态性。

您在这里所做的就是继承。因此,父类的方法属性和方法将继承到子类,并且反之亦然。在您的情况下,Second是父类,而myClassSecond类的子类。由于getArea是在子类myClass中定义的,因此父类Second没有关于getArea方法的详细信息。因此,您会收到此错误。