创建Person类的Java程序错误

Abh*_*hvi 0 java inheritance constructor

请问任何人都可以告诉我以下代码中的错误是什么?

问题是

创建一个有的人

  • 变量'name',用于存储人员的姓名.
  • 一个构造函数,它接受一个用于初始化name变量的参数
  • 一个方法getName(),显示名称.
  • 受保护的方法setName(),它接受一个用于修改name变量的参数.

创建一个名为student的上述类的子类,其中包含

  • 用于存储学生PRN的变量
  • 用于存储学生所属课程的变量
  • 一种方法,显示学生的所有细节,即名称,名称和课程.

计划:

class Person
{
 String name;
 Person(String s)
 {
  name=s;
 }
 void getName()
 {
  System.out.println("Name is "+name);
 }
 void setName(String sa)
 {
  name=sa;
 }
}
class subPerson extends Person
{
 //String sa;
 int Prn;
 String course;
 subPerson(String s,int P,String co)
 {
  name=s;
  Prn=P;
  course=co;
 }
 void displayal()
 {
  System.out.println("Name is ");
  System.out.println("PRN is "+Prn);
  System.out.println("course is "+course);
 }
}
class Inher
{
 public static void main(String args[])
 {
  int area,volumea;
  subPerson h1 = new subPerson("Abhishek",20,"MBA");
  h1.displayal();
 }
}
Run Code Online (Sandbox Code Playgroud)

Lau*_*ves 6

Person的构造函数接受一个String.由于subPerson扩展了Person,它的构造函数将调用Person的构造函数.默认情况下,它将使用no-arg构造函数,但由于Person没有,所以它不起作用.

尝试将subPerson的构造函数更改为:

 subPerson(String s,int P,String co)
 {
  super(s);
  Prn=P;
  course=co;
 }
Run Code Online (Sandbox Code Playgroud)

  • 除此之外:您的大小写有点随意,这使您的代码难以阅读.在Java中,类通常具有大写名称(例如:SubPerson),而方法,字段和局部变量(包括参数)通常以小写字母开头. (4认同)
  • mykhaylo:实际上,那不是真的..java源文件只能有一个公共顶级类,它需要具有与源文件一致的名称,但它可以包含多个非公共顶级类.(虽然我不建议一般这样做) (3认同)