2 bp4312 bp4312 于 2017.09.11 08:40 提问

JAVA 子类无法在主函数new

各位大虾 代码如下
package example1;
class Person
{
private String name;
private int age;
public void setName(String name)
{
this.name=name;
}
public void setAge(int age)
{
this.age=age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;

}

class Student extends Person
{
private String school;
public String getSchool()
{
return school;
}
public void setSchool(String school)
{
this.school=school;
}

}

}
public class Test {

public static void main(String[] args) {


    // TODO Auto-generated method stub

}

}
为什么我在主函数中new student 会报错,说找不到student这个类呢

16个回答

zy841958835
zy841958835   Ds   Rxr 2017.09.11 08:45

因为你的student 是个内部类

zy841958835
zy841958835 你的student是Person的内部类 只能通过Person去访问
2 个月之前 回复
bp4312
bp4312 没太明白 我这个没加private啊
2 个月之前 回复
baidu_26611019
baidu_26611019   2017.09.11 08:46

请以此确认一下几点:
1、你的Test类是否与Student类在一个包下,不在一个包需要import
2、你的Student类名是否正确 Student student=new Student();
3、你的Person和Student前面应该用public修饰,表示让别的类可见
4、如果依然不行,需要clean一下你的工程

baidu_26611019
baidu_26611019 不过 最好不要这样创建类 关系耦合台紧密了 又是内部类又是子类 有点混乱啊
2 个月之前 回复
baidu_26611019
baidu_26611019 哥们,原来你的Student是一个内部类呀!!! 没看清楚,内部类要通过他的外部类来调用滴,Student s=new Person().new Student(); 或者 在Student前加static 然后 Student s=new Person.Student();
2 个月之前 回复
qq_40188127
qq_40188127 在class Student extends Person前边加个}试试
2 个月之前 回复
bp4312
bp4312 2 对的 是这样写的 3 我加pulbic也不好使
2 个月之前 回复
bp4312
bp4312 1 是在一个报下,并且是在一个calss下
2 个月之前 回复
zy841958835
zy841958835   Ds   Rxr 2017.09.11 09:18

package service.com;

class Person {
private String name;
private int age;

public void setName(String name) {
    this.name = name;
}

public void setAge(int age) {
    this.age = age;
}

public String getName() {
    return name;
}

public int getAge() {
    return age;

}

}

class Student extends Person {
private String school;

public String getSchool() {
    return school;
}

public void setSchool(String school) {
    this.school = school;
}

}

public class Test1 {
public static void main(String[] args) {

    new Student();

}

}

wohuozheng
wohuozheng   2017.09.11 09:24

这样子就可以了 Student s=new Person().new Student();

github_38391647
github_38391647   2017.09.11 08:45

加个static

 static class Student extends Person{
  // ....
}
bp4312
bp4312 加static 要不好用
2 个月之前 回复
maxamlove
maxamlove   2017.09.11 09:06

肯定找不到student这个类啊,Java是大小写敏感的语言,你定义的是Student

bp4312
bp4312 是这样的 Student student =new Student(); 这样写也不信
2 个月之前 回复
tzgdd8912442
tzgdd8912442   2017.09.11 09:09

类上加student 类加 public 修饰 试试

bp4312
bp4312 不好用
2 个月之前 回复
qq_33727653
qq_33727653   2017.09.11 09:24

这是访问修饰符的原因,楼主可以在Student类前加public,也可在Person前加public (这时用new Person.Student()创建示例【好像是这样+_+】)。

qq_31680021
qq_31680021   2017.09.11 09:24

类用public修饰,然后大小写不对

bp4312
bp4312 是我把Student这个类放在Person里了 谢谢
2 个月之前 回复
Jamie_Jiang
Jamie_Jiang   2017.09.11 09:25

把Student提出来 你写在Person类的大括号里面了

Jamie_Jiang
Jamie_Jiang 回复bp4312: 不客气!加油哦!
2 个月之前 回复
bp4312
bp4312 谢谢啦美女,就是这个问题。
2 个月之前 回复
共16条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片