| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1811 人关注过本帖
标题:大家帮我看一下,在super()函数前加this()编译都不能通过,去掉this() ...
只看楼主 加入收藏
情丨调
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-21
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:8 
大家帮我看一下,在super()函数前加this()编译都不能通过,去掉this()就没问题,为什么呢?
图片附件: 游客没有浏览图片的权限,请 登录注册



下面是源代码,大家可以跑得看一下 ,谢谢

package TestDemo;

class Person{

String name;

int age;

String address;

Person(){

System.out.println("我是父类无参构造方法。");

}

Person(int age,String name,String address){

this.age=age;

this.name=name;

this.address=address;

System.out.println("我是父类有参构造方法。");

}

void tell(){

System.out.println("我是父类的tell方法。");

}

}

class Student extends Person{

int score;

Student(){

System.out.println("我是子类无参构造方法。");

}

Student(int age,String name,String address,int score){

this();

super(age,name,address);

super.tell();

System.out.println("我是子类有参构造方法");

System.out.println("大家好,我叫"+name+",我今年"+age+"岁,家住"+address+",今天考试我考了"+score+"分!");

}

}

public class Test02 {

public static void main(String[] args) {

new Student();

new Student(20,"张三","北京",100);

}

}




搜索更多相关主题的帖子: address package 源代码 super 
2015-11-07 21:04
情丨调
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-21
收藏
得分:0 
最近在看super和this关键字,有点混乱
2015-11-07 21:05
情丨调
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-21
收藏
得分:0 
我觉得这样写是没有问题的,那么问题到底出在哪里呢
2015-11-07 21:07
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:20 
程序代码:
class Person{

    String name;

    int age;

    String address;

    Person(){

        System.out.println("我是父类无参构造方法。");

    }

    Person(int age,String name,String address){

        this.age=age;

        this.name=name;

        this.address=address;

        System.out.println("我是父类有参构造方法。");

    }

    void tell(){

        System.out.println("我是父类的tell方法。");

    }

}

class Student extends Person{

    int score;

    Student(){
        super(21,"张无忌","湖南");
        System.out.println("我是子类无参构造方法。");

    }

    Student(int age,String name,String address,int score){

        this();
        super.tell();

        System.out.println("我是子类有参构造方法");

        System.out.println("大家好,我叫"+name+",我今年"+age+"岁,家住"+address+",今天考试我考了"+score+"分!");

    }
    

}

public class Test02 {

    public static void main(String[] args) {

        new Student();

        new Student(20,"张三","北京",100);

    }

}

关键字滥用,注意一点即可
this和super都是放在除注释以外的首行

剑栈风樯各苦辛,别时冰雪到时春
2015-11-09 11:13
情丨调
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2013-4-21
收藏
得分:0 
回复 4楼 林月儿
先表示感谢,其实这一点我之前有怀疑过,
那现在如果我确实需要同时用“子类的有参构造方法”调用“子类的无参构造方法”和“父类的有参构造方法”的话,代码怎么写呢?
2015-11-09 13:38
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
那现在如果我确实需要同时用“子类的有参构造方法”调用“子类的无参构造方法”和“父类的有参构造方法”的话,代码怎么写呢?
在注意我说的关键字置于首行的关键点外
可以通过构造器之间的重载调用来避免我说的注意点
比如调用单参分化任务
程序代码:
 Student (int age){
        this();
    }
    Student(){
        this(22,"林月","湖南",88);
    }
    Student(int age,String name,String address,int score){
       super(21,"张无忌","湖南");
    }

剑栈风樯各苦辛,别时冰雪到时春
2015-11-09 14:03
wcao777
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-11-21
收藏
得分:0 
super要放在第一位置
2015-11-25 14:50
GrayJerry
Rank: 5Rank: 5
等 级:贵宾
威 望:14
帖 子:75
专家分:310
注 册:2015-10-20
收藏
得分:0 
super是指向父类的引用,必须放在第一行
2015-11-25 15:37
java彦祖
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-1-3
收藏
得分:0 
this()和Super()不能同时出现,因为他们都要位于第一行
2016-01-05 00:29
快速回复:大家帮我看一下,在super()函数前加this()编译都不能通过,去掉th ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028429 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved