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)

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

此处引用原来的图示:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
综合小区管理系统管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、车位管理、车位分配管理、出入管理、字典管理、房屋管理、物业费缴纳管理、公告管理、物业人员投诉管理、我的私信管理、物业人员管理、用户管理、管理员管理。用户的功能包括管理部门以及部门岗位信息,管理招聘信息,培训信息,薪资信息等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 综合小区管理系统管理系统可以提高综合小区管理系统信息管理问题的解决效率,优化综合小区管理系统信息处理流程,保证综合小区管理系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理综合小区管理系统信息,包括出入管理,报修管理,报修管理,物业费缴纳等,可以管理操作员。 出入管理界面,管理员在出入管理界面中可以对界面中显示,可以对招聘信息的招聘状态进行查看,可以添加新的招聘信息等。报修管理界面,管理员在报修管理界面中查看奖罚种类信息,奖罚描述信息,新增奖惩信息等。车位管理界面,管理员在车位管理界面中新增。公告管理界面,管理员在公告管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值