sinat_33365162
2015-12-23 01:28
采纳率: 100%
浏览 1.5k
已采纳

JAVA抽象类(新手求解)

子类继承了一个抽象类,抽象类中没有无参构造函数,有有参构造。请问子类能实例化么?如果能,怎么做?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 谁用了我的英文名 2015-12-23 01:37
    已采纳

    子类构造方法中使用super()传参,指定一个父类的构造器
    假如父类构造器是private修饰的那就没办法继承了。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • bdmh 2015-12-23 01:39

    能,可以直接使用无参,也可以使用父类的有参构造

    评论
    解决 无用
    打赏 举报
  • java仔 2015-12-23 01:42

    首先,你应该先了解继承的原理,继承的强大在于子类可以继承来自父类的一切可继承的特征和行为,更重要的是子类不仅仅可以继承来自父类的特征和行为,而且还具备自我扩展的能力。所以说,实例化的问题并不需要担心,如果你需要通过无参构造进行实例化,那么将子类扩展一下即可。这是我的个人理解,就跟人类进化一样,你继承了你祖辈的优点,同时你在生活中也可以扩展自己的优点,这样后代就会变得强大。

    评论
    解决 无用
    打赏 举报
  • 浪漫鼠 2015-12-23 01:46

    java抽象类的构造方法和普通类的构造方法一样,都是用来初始化类

    只是抽象类的构造方法不能直接调用 因为抽象类不能实现实例
    但是一旦一个普通类继承了抽象类 便也可以在构造函数中调用其抽象类的构造函数也可以使用其方法

    可以这么理解吧 抽象类就是一个不能实例化的一个比较特别的类,不过如果方法加了abstract那么就必须在子类里面重写了
    //父类
    public abstract class TestAbstract {
    public abstract void TestAbstract(String a,String b);
    }

    //子类
    public class ChildAbstract extends TestAbstract {

    public ChildAbstract(String a,String b){
        TestAbstract(a,b);
    }
    
    public void TestAbstract(String a, String b) {
    
    }
    

    }

    //实例化类
    public class InstantiationAbstract {
    String a="传入参数a";
    String b="传入参数b";

    ChildAbstract child=new ChildAbstract(a,b);
    

    }

    评论
    解决 无用
    打赏 举报
  • 浪漫鼠 2015-12-23 01:54

    上面的写的有点问题,看下面这个:

    public abstract class TestAbstract {
    public TestAbstract(String a,String b) {
    }
    }

    public class ChildAbstract extends TestAbstract {

    public ChildAbstract(String a,String b){
        super(a,b);     
    }   
    

    }

    public class InstantiationAbstract {
    String a="传入参数a";
    String b="传入参数b";

    ChildAbstract child=new ChildAbstract(a,b);
    

    }

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题