日期:2014-05-20  浏览次数:20735 次

夜深了 来问个比较2的问题
abstract类里写private方法 有意义吗

------解决方案--------------------
有意义。
可以给base class 实现的方法提供服务。abstract class只是不能被instantiate但可以给继承类提供服务(define method) .

------解决方案--------------------
至少是可以这么写的,把非abstract方法写了private就好了。至于意义就不好说了,一般也确实见的少,重点都集中在抽象方法上了。
------解决方案--------------------
Java code

abstract class Base{
    public void service(){
        process();
        clear();
    }
    //我们只想让子类改写这个方法
    public abstract void process();
    
    private void clear(){
        //这个方法,我们不想被子类改写
        System.out.println("释放资源!");
    }
}
class Sub extends Base{
    public void    process(){
        System.out.println("做业务逻辑处理!");
    }
}
class Test{
    public static void main(String args[]){
        Base sub = new Sub();
        sub.service();
        //这么做,Base的子类只需要关心业务逻辑处理,又不会忘掉做一些释放资源之类的操作,
        //这就是一种典型的“模板模式”
    }
}

------解决方案--------------------
探讨
对Java一些概念还不是很了解 谢谢大家的回答 还有个疑惑
抽象类里的抽象public方法在继承的子类里进行重写 给我感觉和接口类-->实现类这种差不多
有什么区别吗

------解决方案--------------------
探讨

引用:
引用:
对Java一些概念还不是很了解 谢谢大家的回答 还有个疑惑
抽象类里的抽象public方法在继承的子类里进行重写 给我感觉和接口类-->实现类这种差不多
有什么区别吗

抽象类的部分方法已经实现了.
而接口中的方法都是抽象方法.

也就是说抽象类的范围比接口要大么