各位帮帮我看看这个程序出错怎么改才行?
题目:1.同一个包中分别编写Person,Student类。Person具有年龄,性别,姓名,地址这四个基本属性,并且它们的访问权限分别是私有的,缺省的,保护的,公有的,同时还拥有sleep方法。Student类从Person类继承,并且拥有学号属性,及学习方法。这里要求Person,Student类的构造函数是有参数的构造函数,通过有参数的构造函数对类中的数据进行初始化。
2. 在另外一个包中创建Teacher类,Teacher类从Person类中继承,教师具有职称属性及教学这个方法,同样要求教师类的构造函数是有参数的。
3. 分别创建教师类和学生类的对象,并编写程序观察这些哪些属性方法可以访问,哪些属性方法可以从父类继承下来。
4. 记录观察的结果,并得出结论。我编代码如下,可是有错,请您帮改改: -ffAWNQ
public class Main {class Person{
private int age=0;
String sex="";
protected String name="";
public String address="";
void sleep(){
System.out.println("我正在睡觉,请误打扰!");};
public Person()
{
System.out.println("person无参数构造函数");
}
public Person(int age,String sex,String name,String address)
{
this.age=age;
this.sex=sex;
this.name=name;
this.address=address;
System.out.println("person参数的构造函数");
}
} class Student extends Person{
int stu_no;
void study(){
System.out.println("我正在学习,请误打扰!");};
public Student()
{
System.out.println("student 无参数的构造函数");
}
public Student(int s_age,String s_sex,String s_name,String s_address,int stu_no)
{ super(age,sex,name,address);
this.age=s_age;
this.sex=s_sex;
this.name=s_name;
this.address=s_address;
this.stu_no=stu_no;
System.out.println("student参数的构造函数");
}
}class Teacher extends Person{
String zhichen;
void teaching(){
System.out.println("我正在教书,稍后再来找我!");};
public Teacher()
{
System.out.println("student 无参数的构造函数");
}
public Teacher(int t_age,String t_sex,String t_name,String t_address,String t_zhichen)
{ super(age,sex,name,address);
this.age=t_age;
this.sex=t_sex;
this.name=t_name;
this.address=t_address;
this.zhichen=t_zhichen;
System.out.println("Teacher参数的构造函数");
}
}public static void main(String [] args)
{
Student stu=new Student(24,"男","ylw","fujian","071806164");
System.out.println("---------------------------"); Student tea=new Teacher(27,"女","zyl","fujian","教授");
System.out.println("---------------------------");
}
}
编译出错情况如下:
init:
deps-jar:
Compiling 1 source file to D:\java\实验一\build\classes
D:\java\实验一\src\test1\Main.java:36: age 可以在 test1.Main.Person 中访问 private
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:36: 无法在调用父类型构造函数之前引用 sex
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:36: 无法在调用父类型构造函数之前引用 name
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:36: 无法在调用父类型构造函数之前引用 address
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:37: age 可以在 test1.Main.Person 中访问 private
this.age=s_age;
D:\java\实验一\src\test1\Main.java:51: age 可以在 test1.Main.Person 中访问 private
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:51: 无法在调用父类型构造函数之前引用 sex
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:51: 无法在调用父类型构造函数之前引用 name
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:51: 无法在调用父类型构造函数之前引用 address
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:52: age 可以在 test1.Main.Person 中访问 private
this.age=t_age;
D:\java\实验一\src\test1\Main.java:63: 无法从静态上下文中引用非静态 变量 this
Student stu=new Student(24,"男","ylw","fujian","071806164");
D:\java\实验一\src\test1\Main.java:66: 无法从静态上下文中引用非静态 变量 this
Student tea=new Teacher(27,"女","zyl","fujian","教授");
12 错误 生成失败(总时间:10 秒)
题目:1.同一个包中分别编写Person,Student类。Person具有年龄,性别,姓名,地址这四个基本属性,并且它们的访问权限分别是私有的,缺省的,保护的,公有的,同时还拥有sleep方法。Student类从Person类继承,并且拥有学号属性,及学习方法。这里要求Person,Student类的构造函数是有参数的构造函数,通过有参数的构造函数对类中的数据进行初始化。
2. 在另外一个包中创建Teacher类,Teacher类从Person类中继承,教师具有职称属性及教学这个方法,同样要求教师类的构造函数是有参数的。
3. 分别创建教师类和学生类的对象,并编写程序观察这些哪些属性方法可以访问,哪些属性方法可以从父类继承下来。
4. 记录观察的结果,并得出结论。我编代码如下,可是有错,请您帮改改: -ffAWNQ
public class Main {class Person{
private int age=0;
String sex="";
protected String name="";
public String address="";
void sleep(){
System.out.println("我正在睡觉,请误打扰!");};
public Person()
{
System.out.println("person无参数构造函数");
}
public Person(int age,String sex,String name,String address)
{
this.age=age;
this.sex=sex;
this.name=name;
this.address=address;
System.out.println("person参数的构造函数");
}
} class Student extends Person{
int stu_no;
void study(){
System.out.println("我正在学习,请误打扰!");};
public Student()
{
System.out.println("student 无参数的构造函数");
}
public Student(int s_age,String s_sex,String s_name,String s_address,int stu_no)
{ super(age,sex,name,address);
this.age=s_age;
this.sex=s_sex;
this.name=s_name;
this.address=s_address;
this.stu_no=stu_no;
System.out.println("student参数的构造函数");
}
}class Teacher extends Person{
String zhichen;
void teaching(){
System.out.println("我正在教书,稍后再来找我!");};
public Teacher()
{
System.out.println("student 无参数的构造函数");
}
public Teacher(int t_age,String t_sex,String t_name,String t_address,String t_zhichen)
{ super(age,sex,name,address);
this.age=t_age;
this.sex=t_sex;
this.name=t_name;
this.address=t_address;
this.zhichen=t_zhichen;
System.out.println("Teacher参数的构造函数");
}
}public static void main(String [] args)
{
Student stu=new Student(24,"男","ylw","fujian","071806164");
System.out.println("---------------------------"); Student tea=new Teacher(27,"女","zyl","fujian","教授");
System.out.println("---------------------------");
}
}
编译出错情况如下:
init:
deps-jar:
Compiling 1 source file to D:\java\实验一\build\classes
D:\java\实验一\src\test1\Main.java:36: age 可以在 test1.Main.Person 中访问 private
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:36: 无法在调用父类型构造函数之前引用 sex
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:36: 无法在调用父类型构造函数之前引用 name
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:36: 无法在调用父类型构造函数之前引用 address
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:37: age 可以在 test1.Main.Person 中访问 private
this.age=s_age;
D:\java\实验一\src\test1\Main.java:51: age 可以在 test1.Main.Person 中访问 private
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:51: 无法在调用父类型构造函数之前引用 sex
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:51: 无法在调用父类型构造函数之前引用 name
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:51: 无法在调用父类型构造函数之前引用 address
{ super(age,sex,name,address);
D:\java\实验一\src\test1\Main.java:52: age 可以在 test1.Main.Person 中访问 private
this.age=t_age;
D:\java\实验一\src\test1\Main.java:63: 无法从静态上下文中引用非静态 变量 this
Student stu=new Student(24,"男","ylw","fujian","071806164");
D:\java\实验一\src\test1\Main.java:66: 无法从静态上下文中引用非静态 变量 this
Student tea=new Teacher(27,"女","zyl","fujian","教授");
12 错误 生成失败(总时间:10 秒)
{ super(age,sex,name,address); //形参没初值;----super(t_age,t_sex,t_name,t_address)
this.age=t_age; //this代表的是引用自身对象,在Teacher类中并没定义以下的参数,如果用super也错,private是私有变量的定义,无法调用的,可以通过方法传递.this.变量其实在这里的意义不大.
this.sex=t_sex;
this.name=t_name;
this.address=t_address;
this.zhichen=t_zhichen;
System.out.println("Teacher参数的构造函数");
}
}
学生类同理;
public class Person {
public int age = 0; public String sex = ""; protected String name = ""; public String address = ""; void sleep() {
System.out.println("我正在睡觉,请误打扰!");
}; public Person() {
System.out.println("person无参数构造函数");
} public Person(int age, String sex, String name, String address) {
this.age = age;
this.sex = sex;
this.name = name;
this.address = address;
System.out.println("person参数的构造函数");
}}public class Student extends Person {
private String stu_no; void study() {
System.out.println("我正在学习,请误打扰!");
}; public Student() {
System.out.println("student 无参数的构造函数");
} public Student(int s_age, String s_sex, String s_name, String s_address, String stu_no) {
super(s_age, s_sex, s_name, s_address);
this.age = s_age;
this.sex = s_sex;
this.name = s_name;
this.address = s_address;
this.stu_no = stu_no;
System.out.println("student参数的构造函数");
}}
public class Teacher extends Person {
String zhichen; void teaching() {
System.out.println("我正在教书,稍后再来找我!");
}; public Teacher() {
System.out.println("student 无参数的构造函数");
} public Teacher(int t_age, String t_sex, String t_name, String t_address,String t_zhichen) {
super(t_age, t_sex, t_name, t_address);
this.age = t_age;
this.sex = t_sex;
this.name = t_name;
this.address = t_address;
this.zhichen = t_zhichen;
System.out.println("Teacher参数的构造函数");
} public static void main(String[] args) {
Student stu = new Student(24, "男", "ylw", "fujian", "071806164");
System.out.println("---------------------------"); Teacher tea = new Teacher(27, "女", "zyl", "fujian", "教授");
System.out.println("---------------------------");
}}
int stu_no;
void study(){
System.out.println("我正在学习,请误打扰!");};
public Student()
{
System.out.println("student 无参数的构造函数");
}
public Student(int s_age,String s_sex,String s_name,String s_address,int stu_no)
{ super(age,sex,name,address);
this.age=s_age;
this.sex=s_sex;
this.name=s_name;
this.address=s_address;
this.stu_no=stu_no;
System.out.println("student参数的构造函数");
}
}
//这里的学好应该是整型,但你传的是字符串型,而且应该数字过于打了.
//Student tea=new Teacher(27,"女","zyl","fujian","教授"); 这个应该是不能转换的类型吧!
public int age = 0;
String sex="";
protected String name="";
public String address="";
void sleep(){
System.out.println("我正在睡觉,请误打扰!");
}
public Person()
{
System.out.println("person无参数构造函数");
}
public Person(int age,String sex,String name,String address)
{
this.age=age;
this.sex=sex;
this.name=name;
this.address=address;
System.out.println("person参数的构造函数");
}
} class Student extends Person{
int stu_no;
public Student()
{
System.out.println("student 无参数的构造函数");
}
public Student(int s_age,String s_sex,String s_name,String s_address,int stu_no)
{ super(s_age,s_sex,s_name,s_address);
// this.age=s_age;
// this.sex=s_sex;
// this.name=s_name;
// this.address=s_address;
this.stu_no=stu_no;
System.out.println("student参数的构造函数");
}
void study(){
System.out.println("我正在学习,请误打扰!");
}
} class Teacher extends Person{
String zhichen;
void teaching(){
System.out.println("我正在教书,稍后再来找我!");};
public Teacher()
{
System.out.println("student 无参数的构造函数");
}
public Teacher(int t_age,String t_sex,String t_name,String t_address,String t_zhichen)
{ super(t_age,t_sex,t_name,t_address);
// this.age=t_age;
// this.sex=t_sex;
// this.name=t_name;
// this.address=t_address;
this.zhichen=t_zhichen;
System.out.println("Teacher参数的构造函数");
}
}
public class Main {
public static void main(String [] args)
{
Student stu=new Student(24,"男","ylw","fujian",64);
System.out.println("---------------------------"); Teacher tea=new Teacher(27,"女","zyl","fujian","教授");
System.out.println("---------------------------");
}
}