java中一个子类是否可以继承父类的构造方法
4个回答
2015-06-20 · 知道合伙人互联网行家
关注
展开全部
子类可以继承父类的构造方法,并遵循以下原则:
1、子类无条件的继承父类的无参构造方法。
2、子类自身没有定义构造方法,继承父类的无参构造方法,作为构造方法;子类自身定义了无参构造方法。
3、对于父类的含参构造方法,子类可以在自己的构造方法的第一行使用关键字super来调用。
代码如下:
//Fighter.java
class Airplane{
private int speed;
public Airplane(int s) {
speed=s;
System.out.println;
}
}
class Warplane extends Airplane{
public Warplane() {
super(600);
System.out.println;
}
public Warplane(int s) {
super(s);
System.out.println;
}
}
public class Fighter extends Warplane{
public Fighter(){
super();
System.out.println);
}
public Fighter(int s){
super(s);
System.out.println;
}
public static void main(String[] args) {
System.out.println;
Fighter f1=new Fighter();
System.out.println;
Fighter f2=new Fighter(500);
}
}
1、子类无条件的继承父类的无参构造方法。
2、子类自身没有定义构造方法,继承父类的无参构造方法,作为构造方法;子类自身定义了无参构造方法。
3、对于父类的含参构造方法,子类可以在自己的构造方法的第一行使用关键字super来调用。
代码如下:
//Fighter.java
class Airplane{
private int speed;
public Airplane(int s) {
speed=s;
System.out.println;
}
}
class Warplane extends Airplane{
public Warplane() {
super(600);
System.out.println;
}
public Warplane(int s) {
super(s);
System.out.println;
}
}
public class Fighter extends Warplane{
public Fighter(){
super();
System.out.println);
}
public Fighter(int s){
super(s);
System.out.println;
}
public static void main(String[] args) {
System.out.println;
Fighter f1=new Fighter();
System.out.println;
Fighter f2=new Fighter(500);
}
}
展开全部
构造方法不会被继承,当子类实例化时会自行先去找父类构造方法,之后再找自身构造方法。代码说明(java为例)
父类
class person
{
public person
{
//父类构造方法
System.out.println("我是父类无参构造方法");
}
}
public class student extends person
{
public static void main(String[] args)
{
//实例化student
student stu1 = new student();
}
}
//运行上述代码,在控制台输出:我是父类无参构造方法
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以试下这样:(错误的代码)
class A{
A(String a){
System.out.println(a);
}
private String a="调用了";
}
class B extends A{
B(){
System.out.prntln("no");
}
}
你必须这样:
class A{
A(String a){
System.out.println(a);
}
private String a="调用了";
}
class B extends A{
B(String a){
super(a);
System.out.prntln("no");
}
private Stirng a="调用了";
}
public class A {
public static void main(String[] args) {
B b = new B("s"); //OK
}
}
调用方式:如果子类没有覆盖父类的构造方法则默认调用父类的默认构造方法(即父类无参数的构造方法),也就是说如果父类的构造方法有参数则会出错。
继承就跟我们现实中的父子关系差不多,要有一个孩子对象那么就得先有一个父亲(会调用父类的构造方法),所以会执行父类构造方法。另一种如果你想调用父类的带参数构造方法,那还得通过super关键字来调用。构造方法是不能继承的,想想如果能继承 那不是孩子也能构造父亲了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以,如果子类不重写父类的构造方法,那么调用的时候就调用的是父类的构造方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询