1:抽象类中可不可以有private变量?
2:可不可以有private方法?请在答案后给出相应解释。谢谢!

解决方案 »

  1.   

    楼上的同事们不要误导人。Java允许抽象类中有private变量和private方法,因为按照抽象类的定义,抽象类与一般类的不同之外只在于它里面含有抽象的方法(也可能没有)。既然一般类中有private变量和private方法,抽象类中也能有。大家写一个抽象类就都明白了。
    需要注意的是,抽象类中的abstract方法不能为private,因为它需要子类来继承它。
      

  2.   

    补充说明: 抽象类中不要求所有的方法都是abstract型
      

  3.   

    抽象类是允许有private变量和private方法的,因为抽象类中可以有具体的方法实现,在这些具体方法实现中可以用自己定义为private的变量和private方法。
    它不同于接口,因为接口中不能有方法的具体实现,其所有的方法都要求实现它的类来具体实现,所以,接口中的私有变量和私有方法就永远不会用到,所以接口中不会有private变量和private方法。
      

  4.   

    抽象类可以有private field和method,并且抽象类中完全可以没有抽象方法。
    抽象类只不过不能直接实例化罢了。
      

  5.   

    呵呵,一般情况下不论abstract class还是concrete class都是public或默认的friendly,而不能是其他的访问级别。可以试一试你将class声明为protected或private,看能不能通过编译。但是,在语法上不仅abstract class可以是private的,而且interface也可以是private的,但仅当这个abstract class或interface为inner class的时候成立,而且可以通过编译,可以运行,至于这么做的意图就不清楚了。书上曾经有这部分的介绍,可以看一看。就TIJ上,inner class那一章。
      

  6.   

    可以的
    java.util.Calendar就是
    功能嘛,自己看吧
      

  7.   

    不好意思,没看好题目就答了:(
    楼主说的是都可以,可以把abstract class看成concrete class的半成品,区别仅仅是abstract class不能实例化,或者强制的给出了部分方法的声明,而对于继承这个abstract class的concrete class都必须实现这些方法。同时abstract class可以包含部分方法的实现,这和concrete class中的方法实现是相同的,所以abstract class中可以有private method和private parameter。可以自己写个例子验证一下是否正确。而且虽然abstract class是用作继承的,但是abstract class中的method和parameter却不一定,它们可以用来实现共有的逻辑行为动作,我想这就是将abstract class中的method和parameter声明为private的用意,就像concrete class中声明private method和parameter一样,为了向用户屏蔽掉某些方法的实现。
      

  8.   

    http://www.eimhe.com/bbs/adget.php?id=379765美河学习在线——专业视频课程下载基地