继承当子类继承时,父类中的一切都被继承,在子类中是不是不能更改构造函数的形式,必须根据父类中的格式进行定义
例如:

父类
class A
{
    private int a;
    private int b;
    public A(int aValue,int bValue)
    {
        a = aValue;
        b = bValue;
    }
    ......
    ......
    ......
}子类
class B  extends A
{
    private c;
    private d;
    public B(int aValue,int bValue)------->这里子类中的构造函数中的参数必须跟父类一样吗?包括类型跟参数名
    {
        super(aValue,bValue);还有关于super的用法,是用来表示父类的东西,为什么继承之后要使用父类的属性不能直接使用,还要借助于super
     }
}

大概问题就这么多,大家给解释解释啊

解决方案 »

  1.   

    子类
    class B extends A
    {
    private c;
    private d;
    public B(int aValue,int bValue)------->这里子类中的构造函数中的参数必须跟父类一样吗?包括类型跟参数名
    {
    super(aValue,bValue);还有关于super的用法,是用来表示父类的东西,为什么继承之后要使用父类的属性不能直接使用,还要借助于super
    }
    }1.如果形参类型一样,则为重写了父类的方法
      如果形参类型不一样
    例如
    public B(int a,float b){
    }
    则你会隐式继承一个父类的构造函数,这个构造函数如果你写出来,就是下面这个样子  
    public B(int aValue,int bValue){
       super(aValue,bValue);

    然而
    public B(int a,float b){
    }
    这个构造函数则为你重载的一个新的构造函数,也就是说,现在你的B类有两个构造函数第二个问题我就不想回答了,其实第一个我也不想回答。。
    我想跟你说,你的问题不是继承的问题。
    你现在是需要看书的问题。如果你不明白重载和重写的机制还算可以理解的话,那你不知道两个函数的形参参数名是任意的,互不影响的,那就是不可以理解的。说明你书还需要看,基本上可以说明你前几章基础内容需要再仔细的看一遍,或者几遍,再来学习继承这类的知识。
    关于super this 方法重载 方法重写 ,这些都是继承里的基本语法,任何一本普通的java书里都会对这一部分大书特书(因为深一点的他也不会,不讲语法讲什么)总结一下。断网!看书!才是你应该做的!
      

  2.   

    说错了
    构造函数是不能被继承的
    子类的构造函数一定会调用父类的构造函数,通过super()调用,或显式或隐式
    如果父类有一个自己定义的带参数的构造函数,那么子类必须显式重写这个函数(我上面说如果不写会隐式继承一个那是错的,如果不写编译器会报错),并且必须调用super(参数)方法public B(int a,float b){
    }
    这个构造函数则为你重载的一个新的构造函数,也就是说,现在你的B类有两个构造函数
    这句是正确的
      

  3.   

        首先,子类的构造器和父类的构造器是可以不同的,两者没有直接联系。再就是,当子类继承父类的时候,父类中一些变量是不能直接访问的,一是受访问权限限制,二时因为子类与父类有相同名称的变量,比如A中有个int类型的A,A的子类B中也有个叫A的变量,那么访问A中的变量需要用super,suiper.A。
      

  4.   

        还有就是调用子类构造器的时候,父类的构造函数会被先调用来保证父类被初始化,可以有super来调用特定的构造函数,而且必须将代码放在第一句。否则,会调用父类的默认构造函数。
      

  5.   

    1楼说得有道理。但也可以这样定义:
    class A{
    private int a;
    private int b;
    public A(int aValue,int bValue){
    a=aValue;b=bValue;
    }
    public int geta(){
    return a;
    }
    public int getb(){
    return b;
    }
    }
    public class B extends A {
    B(){
    super(3,4);
    }
    public static void main(String args[]){
    B t=new B();
    System.out.println(t.geta());
    System.out.println(t.getb());
    }
    }
    如果子类的构造函数和父类的构造函数参数不同,则必须在子类的构造函数书里面写super(3,4);
      

  6.   

    1楼说的有些错误。
    构造方法是不能被继承的~
    而且要想重载构造器就必须要写两个
    假如父类的构造是public A(int a,int b){
    }那么父类必须跟一个public B(int a,int b){
    }也就是说父类构造器是什么样子类也必须是什么样。至于重写和重载你不会就应该看书了。
    拿方法来说,
    子类继承了父类的方法,然后子类想修改父类的方法。这叫重写,最简单的
    是当父类是抽象类的时候。子类如果不是抽象类就必须把父类重写。
    而重载是在一个类中出现的方法名相同,方法签名不同的方法。把他们叫做重载
    examplepublic void method1(int a,String b ){
    }
    public void method1(int a ,int b ){
    }这就是重载,
    希望可以帮到你~~
      

  7.   

    你的问题是这样的:
      当父类构造函数是有参数时 即 public A()方法里面有参数,子类必须调用父类构造函数 即public A(), 用SUPER()方法,SUPER中的参数个数和类型必须和public A()中的相同。
      至于子类人构造函数 即public B(),它的参数类型、个数是任意的。如:class father
    { int n=1;
    int m=2;
    public father(int n,int m){
    this.n=n;
    this.m=m;
    System.out.println("n="+n+"\n"+"m="+m);
    }
    }public class Child extends father
    { int s;
    String t;
    public Child(int s,String t){---Child()里面的参数个数,类型是任意的
    super(7,9);-----必有有这个方法,且必须有两个Int 型参数
    this.s=s;
    this.t=t;

    }
    public static void main(String []args){
    father f=new Child(9,"t");
    }
    }