zoukankan      html  css  js  c++  java
  • Java编程思想(20170818)

    继承和组合是java中非常常用的两种创建新类型的方法,两者都能提高代码的复用率。

    继承主要是想让子类继承父类的基本特性;组合技术通常用于想在新类中使用现有类的功能,而非它的接口。两者的分别是"IS A"和"HAS A"的关系

    继承:

    复制代码
    class Shape {
        public void draw() {
            System.out.println("draw a shape");
        }
    
        public void erase() {
            System.out.println("erase");
        }
    }
    
    class Square extends Shape {
        @Override
        public void draw() {
            System.out.println("draw a Square");
        }
    
        public static void main(String[] args) {
            Square s = new Square();
            s.draw();
            s.erase();
        }
    }
    复制代码

    组合:

    复制代码
    class Draw {
        public void draw() {
            System.out.println("draw");
        }
    }
    
    class Erase {
        public void erase() {
            System.out.println("erase");
        }
    }
    
    class Work {
        public void work() {
            new Draw().draw();
            new Erase().erase();
        }
        
        public static void main(String[] args) {
            new Work().work();
        }
    }
    复制代码

     

    一、相比于组合,继承有以下优点:

    1、在继承中,子类自动继承父类的非私有成员(default类型视是否同包而定),在需要时,可选择直接使用或重写。

    2、在继承中,创建子类对象时,无需创建父类对象,因为系统会自动完成;而在组合中,创建组合类的对象时,通常需要创建其所使用的所有类的对象。

    二、组合的优点:

    1、在组合中,组合类与调用类之间低耦合;而在继承中子类与父类高耦合。

    2、可动态组合。

    总结:

    虽然继承是OOP的一大特性,但很多时候并不推荐使用,因为它常常容易使结构复杂化,容易出错。因此,除非我们确信使用继承会使程序效率最高,否则,不考虑使用它。

    那我们该如何判断是否应该使用继承呢?在java编程思想中提供了一个简单的判断方法,就是在考虑“真的需要向上转型吗?”。

    来源;http://www.cnblogs.com/zhisuoyu/p/5270926.html

  • 相关阅读:
    leveldb实现类sql查询
    系统设计
    Code Complete
    工具 VSCode快捷键
    C/C++ extern
    C/C++ 宏字符串拼接
    【Java】字符串
    【Java】常用类-sysytem-math
    【Java】枚举
    【Java】内部类
  • 原文地址:https://www.cnblogs.com/lianghaode/p/7387854.html
Copyright © 2011-2022 走看看