01 面向对象相关概述

主要针对面向对象的三大特性类与类的六种关系以及面向对象的七大原则进行一些总结和介绍。

面向对象的三大特性

封装(Encapsulation)

不需要知道对象具体实现细节,通过共有方法暴露对象的功能。

继承(Inheritance)

使用已经存在的类作为基础类(父类),在此基础上建立新类(子类),子类既可以复用父类的功能,也能进行扩展,从而提高了代码的复用。另外,Java不像C++一样可以同时继承多个父类,只能够树形的继承,比如:Animal -> Person -> Man,或者通过 接口和内部类 实现多继承!

多态(Polymorphism)

一个类实例的相同方法在不同情形下有不同的表现形式,一般有两种

编译时多态(OverLoading) —— 方法重载

    注释:如果学习过C++的朋友,这点很简单的可以看到实际的例子,

               比如模板方法的实现,编译之后,会发现有很多具体方法的实现。
运行时多态(OverRidding) —— 继承 + 方法重写 + 父类引用指向子类对象

              在java中也就是我们常说的,父类指针指向子类对象,此处就不进行代码例程的演示了。

类与类的关系

记忆口诀:鸡湿衣冠剧组(继承,实现,依赖,关联,聚合,组合) 
前面两个继承和实现基本都知道,而后面的四个只是 语义层次 的区别, 
两个类的相关程度依赖 < 关联 < 聚合 < 组合 
在此之前,相信很多朋友都没接触过UML类图,可能会看不懂,这个是类和接口

1.继承/泛化(Generalization)

一个是父类,一个是子类,用 空心三角箭头的实线 表示从子类指向父类,或子接口指向父接口。

UML图如下所示:

2.实现(Realization) 

一个类实现接口,重写相关方法,用 空心三角箭头的虚线 表示

UML图如下所示:

3.依赖(Dependency)

简单来讲,就是在一个类的方法相关的参数等位置,用到了另外一个类的实例。

具体表现局部变量函数参数返回值等

代码如下所示:

package classReference;

/**
 * 类和类之间的关系之依赖关系
 * @Package       classReference
 * @Title:        DependencyDemo.java
 * @Company:      $
 * @author        BurgessLee 
 * @date          2018年10月9日-上午10:44:17
 * @Description:  $
 */
public class DependencyDemo {
	public static void main(String[] args) {
		C c = new C();
		c.method();
	}
}

class B {
	public void test(){
		System.out.println("B.....");
	}
}

class C{
	public void test(){
		System.out.println("C....");
	}
	
	public void method(){
		B b = new B();
		b.test();
	}
}

UML示意图如下:

4.关联(Association)

一个类的成员变量引用到了另外一个类

示例代码如下:

package classReference;

/**
 * 类和类之间的关系之关联
 * @Package       classReference
 * @Title:        ReferenceDemo.java
 * @Company:      $
 * @author        BurgessLee 
 * @date          2018年10月9日-上午10:52:10
 * @Description:  $
 */
public class ReferenceDemo {
	public static void main(String[] args) {
		C1 c = new C1();
		c.method();
	}
}

class B1{
	public String str = "我是b";
}

class C1{
	private B1 b = new B1();
	public void method(){
		System.out.println(b.str);
	}
}

UML图(实心箭头的实线表示,箭头指向被关联类,另外这个可以双向,一对多或多对多):

5.聚合(Aggregation)

和关联一样是通过成员变量来表现的,不过关联是处于同一层次的,而聚合则 是 整体和局部 层次的,比如:社团 和 小弟,另外即使没有了社团, 小弟们依旧可以到别的地方搞事情。用 空心菱形加实线箭头 表示。

6.组合(Composition)

和聚合类似,只是程度更加强烈,共生死,组合类负责被组合类的生命周期,比如: 社团 和 大佬,如果没了社团,大佬也就就不能存在了。 用 实心菱形加实线箭头表示 表示。

此处引用原来的图示:

猜你喜欢

转载自blog.csdn.net/Burgess_Lee/article/details/82978308