java构造方法。帮忙帮我看看,哪里错了

め追光者 2019-06-03 11:09:04
class A{
public int i=0;
A(int m){
i=1;
}
}

class B extends A{
B(int m){
i=2;
}
}

public class E{
public static void main(String args[]){
B b=new B(100);
System.out.println(b.i);

}
}
...全文
1984 48 打赏 收藏 举报
写回复
48 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
DAVE-BLACK 2019-06-11
引用 21 楼 天*宇的回复:
[quote=引用 2 楼 南国他乡客的回复:]构造方法必须要加上public, 不然new不了.

class A{
    public A(){
        //这里是构造方法的内容
    }
}

放屁,既然构造方法为啥加public[/quote] 还有就是问别人代码的时候不要用伪代码。伪代码鬼知道你想干啥
  • 打赏
  • 举报
回复
DAVE-BLACK 2019-06-11
引用 21 楼 天*宇的回复:
[quote=引用 2 楼 南国他乡客的回复:]构造方法必须要加上public, 不然new不了.

class A{
    public A(){
        //这里是构造方法的内容
    }
}

放屁,既然构造方法为啥加public[/quote] 构造方法加 public是为了给别的包用的。本包不用加。这个层主说的不对
  • 打赏
  • 举报
回复
DAVE-BLACK 2019-06-11
引用 2 楼 南国他乡客的回复:
构造方法必须要加上public, 不然new不了.

class A{
    public A(){
        //这里是构造方法的内容
    }
}

不加修饰符指的是包内可用。加private才是不了实例化
  • 打赏
  • 举报
回复
B类是A类子类,但构造方法不能被继承下来,如果B类和A类的参数一样,用super()或者super(参数),若父类的构造方法无法满足,则要重载构造方法。
  • 打赏
  • 举报
回复
K G 2019-06-09
你这里局部变量不影响i的值,而且夫类成员变量没有i
  • 打赏
  • 举报
回复
K G 2019-06-09
常量没用static修饰
  • 打赏
  • 举报
回复
tzkTangXS 2019-06-09
引用 2 楼 南国他乡客的回复:
构造方法必须要加上public, 不然new不了.

class A{
    public A(){
        //这里是构造方法的内容
    }
}

😓汗。。。。。。。。
  • 打赏
  • 举报
回复
tzkTangXS 2019-06-09
因为A写了有参构造,却没写无参。那么super的时候就必须带参数了。而你不写super(),那么默认是没参的。但你却又没写A的无参构造。综上所述:要么super()里加一int参数,或者写一个A的无参构造。还有对象引用的类型最好是父类
  • 打赏
  • 举报
回复
父类无参数构造没了,子类构造方法却调用父类无参构造,在子类有参构造第一行加super(参数)调用
  • 打赏
  • 举报
回复
Mpersevenrance 2019-06-08
引用 39 楼 Mpersevenrance的回复:
B里面没有成员变量,像A一样写
刚才没看到继承,饿!!!就这样吧
  • 打赏
  • 举报
回复
Mpersevenrance 2019-06-08
B里面没有成员变量,像A一样写
  • 打赏
  • 举报
回复
AX_liujiucheng 2019-06-08
这东西多看看书,基础
  • 打赏
  • 举报
回复
临风待风临 2019-06-07
引用 2 楼 南国他乡客的回复:
构造方法必须要加上public, 不然new不了.

class A{
    public A(){
        //这里是构造方法的内容
    }
}

构造方法是被子类调用初始化父类变量的,用不着public吧,默认的就够了
  • 打赏
  • 举报
回复
qq_43625764 2019-06-07
或者class A{ public int i=0; A(int m){ i=1; } } class B extends  A{ B(int m,int n){ super(n); i=2; } } public class E{  public static void main(String args[]){  B b=new B(100); System.out.println(b.i);     } }
  • 打赏
  • 举报
回复
qq_43625764 2019-06-07
class A{ public int i=0; A(int m){ i=1; } A(){} } class B extends  A{ B(int m){ i=2; } } public class E{  public static void main(String args[]){  B b=new B(100); System.out.println(b.i);     } }
  • 打赏
  • 举报
回复
qq_43625764 2019-06-07
你要么加一个A(){}
  • 打赏
  • 举报
回复
初♥不变. 2019-06-07
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《java构造方法。帮忙帮我看看,哪里错了》, 一起来围观吧 https://bbs.csdn.net/topics/392678069
  • 打赏
  • 举报
回复
安逸一一一 2019-06-07
class A里边应该加一个无参构造器
  • 打赏
  • 举报
回复
千里送人头 2019-06-07
楼主并不需要纠结这个问题,因为有一个默认的前缀,应该是 protected ,这个跟编程习惯有关,一般都会主动写上去,在一般的开发当中,没有什么区别,可以直接用 public ,但是这个前缀对于设计模型来说,就比较重要了,没有这个前缀,有一些设计模型就达不到需求了
  • 打赏
  • 举报
回复
叶遮沉阳 2019-06-07
一个类如果没有定义任何构造方法,系统会默认生成一个无参构造方法, 当有定义有参构造方法时,则不会自动生成无参构造方法。 子类继承父类时,若父类有 无参构造方法,则子类构造方法默认隐式调用父类无参构造方法, 当父类没有 无参构造方法,子类的构造方法必须显式调用父类的有参构造方法。
  • 打赏
  • 举报
回复
加载更多回复(28)
相关推荐
发帖
Java SE

6.2w+

社区成员

Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
帖子事件
创建了帖子
2019-06-03 11:09
社区公告
暂无公告