本帖最后由 Anderson221317 于 2014-11-27 11:52:10 编辑

解决方案 »

  1.   

    抽象就是抽出像的地方class 装系统 {
        public abstract void 修电脑方法_U盘();
        public abstract void 修电脑方法_光盘();
         public abstract void 修电脑方法_ghost镜像();
    }
    这个不像类的封装,这个像工厂一样,提供修电脑的几种方式
      

  2.   


    class 装系统
    {
        public abstract void 修电脑方法_U盘();
        public abstract void 修电脑方法_光盘();
         public abstract void 修电脑方法_ghost镜像();}如果用抽象,个人认为如下比较合适class 装系统
    {
        public abstract void 修电脑方法();
    }然后U盘,光盘,ghost三种不同的实现类都继承 Class 装系统,分别实现修电脑方法()这个方法
      

  3.   

    你这抽象抽的乱七八糟的。抽象是对现实世界共性描述的过程。之所以说面向对象比较好,是因为接近人的思维,更接近我们现实生活。一个类就是描述一类对象,一个对象就有描述对象的属性,以及一个对象所具有的能力体现在方法上面。
    比如  张三是人的具体表现,那人就是对张三,李四,...的抽象,张三,李四是具体的可观存在,而人是抽象出来的,不是可观存在,为什么非要张三 李四都叫人呢  是因为符合人特征,人会说话,会吃饭,一个头有四肢,会走路,所以抽象为人,当然如果他们都瘸了,那也可以叫瘸子,因为符合瘸子的特征--腿瘸。这样跟现实很接近。把张三李四叫人的过程叫抽象。张三就是一个具体可观事物,也就是人的具体表现,叫做对象,张三李四抽象成人这个概念,人就是一个类。
    张三 李四----》抽象----》人               对象<------抽象------->类          
    方法对类的能力的描述,人 --- 吃饭  ;属性是对类象的特征描述,四肢,一个脑袋
    总结下,一个类一般是名词,属性也一般是名词,方法描述动作行为,一般是动词;
    再看你上面的问题:
    1、一个类  名字能叫”  装系统“   这个就很不合适,  
    2、修电脑的  是个体,应该叫维修员代表一类
    3、装系统是方法 不是一个类
    4、class 修电脑的 extends 张三的电脑  你这个表示什么,莫非给人安装了电脑的脑子?  人怎么能继承电脑?以为是钢铁侠,给人安装芯片啊,电脑跟人一点关系都没有,怎么会继承,继承是子类要有父类的属性和方法。除非人能当电脑使用,那你这个可以。但是现实中大多数是不可能的。
    5、张三的电脑   张三  这些都是具体可观存在,是对象不是类应该是    张三  =  new  人();
    如果张三是维修人员  那么   张三 = new 维修人员();好好看书 好好理解,你这全都不对。
      

  4.   

    哥们,抽象从本质上说是数学建模。面对一个复杂的业务,如何提取业务模型,这个事需求分析人员的任务。推荐下UML(统一建模语言)之类的教材,那上边对这个有很详细的解释。
      

  5.   

    那个class 装系统代表的是人遇到问题所想的,就像如果你遇到问题,首先想的就是怎么解决,我这个就是在电脑系统坏掉之后想到了三种解决方法,但是三种必须选一种来实现。就好像高中毕业选大学一样,是选清华还是选蓝翔都是心里想到,而具体去哪里要看自己。
    class 选学校
    {
       public void 去清华();
       public void 去蓝翔();
    }
    class 录取通知书 extends
    {
      public void 去清华()
      {}
      public void 去蓝翔()
      {}
    }
    class 你自己
    {
     public static void arg(String XXX)
    {
      录取通知书 清华=new 录取通知书();
      清华.去清华();
    }
    }
    可以说这就是一个学霸考完试想的,是能去清华还是能去蓝翔,通知书下来了学霸开始选!择首先我觉得在没选择之前心里想的都是抽象的,选择完毕之后才等于实现。
    我觉得你们都太在意代码了,代码是写的看看的并不是真要用的
      

  6.   

    不是很正确,like this:abstract class 装系统
    {
        public abstract void 装系统方法();
    }public class U盘装系统 extends 装系统{
        public void 装系统方法() {
            // 实现用U盘装系统
        }
    }
    public class 光盘装系统 extends 装系统{
        public void 装系统方法() {
            // 实现用光盘装系统
        }
    }
    public class Ghost系统 extends 装系统{
        public void 装系统方法() {
            // 实现用用Ghost还原系统
        }
    }抽象类是多态的一种,对调用者来说,也就是对电脑城的客户来说,他需要一个“装系统”的对象,对他来说,只关对象有“装系统方法”,具体怎么实现,由子类确定。
      

  7.   

    那个class 装系统代表的是人遇到问题所想的,就像如果你遇到问题,首先想的就是怎么解决,我这个就是在电脑系统坏掉之后想到了三种解决方法,但是三种必须选一种来实现。就好像高中毕业选大学一样,是选清华还是选蓝翔都是心里想到,而具体去哪里要看自己。
    class 选学校
    {
       public void 去清华();
       public void 去蓝翔();
    }
    class 录取通知书 extends
    {
      public void 去清华()
      {}
      public void 去蓝翔()
      {}
    }
    class 你自己
    {
     public static void arg(String XXX)
    {
      录取通知书 清华=new 录取通知书();
      清华.去清华();
    }
    }
    可以说这就是一个学霸考完试想的,是能去清华还是能去蓝翔,通知书下来了学霸开始选!择首先我觉得在没选择之前心里想的都是抽象的,选择完毕之后才等于实现。
    我觉得你们都太在意代码了,代码是写的看看的并不是真要用的
    有这样的代码就有这样的思维,这思维就不对。
      

  8.   

    /* 修电脑的方法 */
    abstract class waysOfRepairPC {
    // 重装系统方法有很多, 所有方法统一抽象成一个抽象方法way(此处是根据楼主的意思写的, 细细想来应该是一个属性标识就可以, 子类中构造时赋予不同值)
    public abstract void way();
    }class USBWay extends waysOfRepairPC {
    // 第一种方法:U盘安装, 这是对抽象的安装系统方法的一个具体实现 
    public void way() {
    System.out.println("U盘装系统");
    }
    }class CDWay extends waysOfRepairPC {
    // 第二种方法:光盘安装, 这是对抽象的安装系统方法的又一个具体实现 
    public void way() {
    System.out.println("光盘装系统");
    }
    }class GhostWay extends waysOfRepairPC {
    // 第三种方法:Ghost安装, 这是对抽象的安装系统方法的最后一个具体实现 
    public void way() {
    System.out.println("Ghost装系统");
    }
    }/* 张三来修电脑问题, 这里不是继承关系, 而应该是合成关系 */
    class Man {
    private String name;
    private waysOfRepairPC way;

    public Man(String name, waysOfRepairPC way) {
    this.name = name;
    this.way = way;
    }
    }public class Test {
    public static void main(String[] args) {
    Man zhangSan = new Man("zhangsan", new USBWay()); // 张三是一个修电脑的人, 他会的修电脑方法是U盘安装
    Man liSi = new Man("lisi", new CDWay()); // 李四是一个修电脑的人, 他会的修电脑方法是光盘安装
    }
    }我的理解  新毕业的程序员  有错的请各位指正
      

  9.   

    抽象就是把若干实体的共同的特性或行为抽出来,放到一起。是一种建模的手段。
    像你说的这些修电脑的流程,是因为他们都有这些过程,你脑子里想出这些步骤的脑力劳动就是抽象的过程。而不是具体的实现上。
    至于java中的抽象类,只要知道有没实现的方法要子类实现就好了,不用执着于这些术语的理解
      

  10.   

    人类<--张三,但张三会抽烟,那么人类应该定义成抽象类,而抽烟应该是一个接口,这个张三继承了人类,有人的基础行为,而且他还会抽烟,继承一般要抽象出最基本的功能,为了实现复用,关系式is-a ,而接口是像一个 is like a ,他像一个人类,因为他有自己的行为,甚至覆写了人类某些特性,比如他可能手上了,少了一只手。
    接口是功能性的,表述性的,你实现完了,他就有这个功能,讲的是一个点。
    抽象类,是贯穿性的,是一条线,总领全局。