this super的用法

来源:百度知道 编辑:UC知道 时间:2024/06/06 14:54:47
找了一个测试this和super用途的小程序,在eclipse里说有两个错(错误在程序里标注了),调了半天也没弄出来,还请各位高手指点一下
package test;
class Person{ //错误① The type Person is already defined
public static void prt(String s){
System.out.println(s);
}
Person(){
prt("A person");
}
Person(String name){
prt("a person name is"+name);
}
}
public class Chinese extends Person{
Chinese(){
super();
prt("a chinese");
}
Chinese(String name){
super(name);
prt("his name is"+name);
}
Chinese(String name,int age){
this(name);
prt("his age is"+age);
}
public static void main(String[] args){
Chinese cn=new Chinese(); //错误② The local variable cn is never read
cn=new Chinese("nacy");
cn=new Chinese("nacy",19);
}
}

问题1:
出现的原因是在同一个包下面有另一个类也叫Person..因此在这里创建Person类的时候会提示Person已经存在了..楼主可以仔细检查下同一个包下面的其他类是否也有叫Person的(无论是否是public类).

问题2:
这只是一个警告,不是错误,原因在于,虽然有三行代码,但是都是为cn赋值的.并没有哪句代码是使用cn的,因此会提示警告.

如果嫌那个黄线碍眼.可以将代码改成
@SuppressWarnings("unused")
Chinese cn = new Chinese();
表明cn是可以不被使用的.警告就消除了

this super junior?

原因在于楼主没用弄清类和构造方法,class Person{ //错
Person(){
prt("A person");

构造方法与类同名的,要放到类里面才行

this代表这个类的意思。。