A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xieguanxiong 黑马帝   /  2012-3-2 12:24  /  2562 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Person
{
    String name;
    int age;
        public Person(String name, int age) {
                this.name = name;
                this.age = age;
        }
        public void show(int a)
        {
                System.out.println(a);
        }   
}
class Student extends Person
{
        String name;
        int age;
        public Student(String name, int age)
        {
                super(name, age);//问题1:为什么这不能写成super.Person(name,age);
        }
        public void show(int a)
        {
                super.show(a);//问题2:为什么这不能写成super(a);

        }
       
       
}
class PersonTest
{
        public static void main(String[] df)
        {
                Student s = new Student("zhansan",12);
                s.show(1);
        }
}

3 个回复

倒序浏览
1.super();本身就是用来表示父类构造方法的,所以,在使用父类构造方法时,需要用super();  而在本类中,Person是父类,它的构造函数则是public Person(String name, int age),所以在子类中调用父类构造参数时使用super(name, age) 因为super()本身就是父类构造函数了,所以不需要使用super.Person();  
2.show()方法是你父类中的一个普通的方法,在调用时,需要有一个对象来调用,如你在别的类中要使用Person类中的show()方法,就先要创建Person类的对象:Person p =new Person();  然后再p.show();  而本例中,super代表的就是父类的对象,因为他们之间有继承关系,所以子类访问父类时可以用super来表示,故使用super.show();如果使用super(a)调用的依然是父类中一个参数的构造函数,本例中没有那个构造函数。

评分

参与人数 1技术分 +1 收起 理由
职业规划-刘倩老师 + 1 赞一个!

查看全部评分

回复 使用道具 举报
1、super()本身就是父类构造方法
2.  问题1:为什么这不能写成super.Person(name,age);//等于父类引用对象.父类构造函数(参数列);
3. 为什么这不能写成super(a);//show()是子类中的一个普通方法,而super是调用父类的构造方法
想将参数传入show()中,创建子类对象,再 对象.方法(参数)即可。
自己的理解,希望可以帮咱你.{:soso_e117:}
回复 使用道具 举报
super跟this用法类似 一个是父类对象 一个是本类对象,竟然是对象 构造函数和成员函数的规范写法就分别是super(构造参数列表) 和super.method();
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马