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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张涛的狂怒 中级黑马   /  2014-8-7 20:39  /  1148 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张涛的狂怒 于 2014-8-8 06:11 编辑

class A{
private A(){}//改成A(int a){}还是报错
    private int x=10;
    protected int y=20;
    void fun(){
     System.out.println("y+x="+(y+x));
    }
}
class C extends A{
  private  C(){}//为什么报错改成C(int a){}还是报错
     void run()
     {
      y=y+1;
      System.out.println("y="+y);
             }
        }

8 个回复

倒序浏览
父类的构造方法不能私有  这样就没法初始化父类数据了,改成public A()
回复 使用道具 举报
你把父类构造器私有了?
回复 使用道具 举报
大哥   构造函数不要私有化,  私有化构造函数是 创建单例设计模式的时候用的
回复 使用道具 举报
不知道楼主为什么把父类和子类里的构造器都私有化了?目前我只看到需要用到单例模式,才对构造器进行私有化:)
回复 使用道具 举报
子类继承父类,当对子类进行实例化时C c = new C();如果被实例化的类有父类,将先调用父类的构造方法,这时楼主把父类的构造器私有化了,所有就报错了:lol
回复 使用道具 举报
你加private修饰了构造函数,子类还怎么走父类的构造方法初始化父类啊?
回复 使用道具 举报
楼上全是正解,本人基础还不太好!:lol
回复 使用道具 举报
class Test1{
        public static void main(String[] args) {
                A a=new A();
                a.fun();           // y+x=30       
                C c=new C();
                c.fun();           // y=21           C内的函数是fun还是run?构造器没用处吧?       
                A a1=new C(); //多态
                a1.fun();          // y=21
        }
}
class A{
        A(){}   
    private int x=10;
    protected int y=20;
   
    void fun(){
            System.out.println("y+x="+(y+x));
    }
}
class C extends A{
        C(){}     
    void fun(){
             y=y+1;
             System.out.println("y="+y);
    }
    void run(){
             y=y+1;
             System.out.println("y="+y);
    }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马