面向对象以及相关基本定义
2018-12-17 10:47:42来源:博客园 阅读 ()
摘要:本文简单介绍了面向对象的编程方式,以及与之有关的一些基本定义。
面向对象
什么是面向对象
面向对象编程是一种对现实世界建立计算机模型的一种编程方法。简称OOP(Object Oriented Programming)。
面向对象是一种编程思想,是一种思考问题的思维方式。
在现实世界中,当我们提到动物这个概念,实际上它是一个抽象的概念,而具体动物是指老虎,狮子,大象等等。
在对应的计算机模型中,我们把动物这种抽象的概念称之为Class,也就是类。而那些具体的对象称之为实例,并且用不同变量标识不同的实例。
面向对象和面向过程
面向过程与面向对象都是我们编程中,编写程序的一种思维方式。
面向过程的程序设计方式,是遇到一件事时,先做什么,再做什么,然后一步步实现的过程。
面向对象的程序设计方式,是遇到一件事时,先思考有哪些类和对象,然后思考类和对象里有哪些属性和方法,然后分析类和类之间的关系,最后一群对象合力能把事就好。
类和对象
定义
类是一组具有相同特征的对象的集合,是一个抽象的概念。类中定义了这一类对象所具有的静态属性(属性)和动态属性(方法)。
对象是一个类具体的某一个实例,是看得见摸得着的东西。世间存在的一切都可以看做是对象。
语法
定义类:
1 public class 类名 { 2 属性类型 属性名 = 属性值; 3 ... 4 public void 方法名(int i) { 5 方法体; 6 } 7 ... 8 public static void main(String[] args) { 9 主函数方法体; 10 } 11 }
定义对象:
1 类名 对象名 = new 类名();
方法
定义
方法就是用来完成解决某件事情或实现某个功能的办法。
在Java中,声明一个方法的具体语法格式如下:
1 修饰符 返回值类型 方法名(参数类型 参数名, 参数类型 参数名, ... , 参数类型 参数名) { 2 执行语句; 3 return 返回值; 4 }
修饰符:
方法的修饰符比较多,有对访问权限进行限定的,有静态修饰符static,还有最终修饰符final等,这些修饰符在后面的学习过程中会逐步介绍。
返回值类型:
用于限定方法返回值的数据类型,返回给调用方,返回类型可以是任意类型。
如果不需要返回值,则写void,也不需要写return和返回值。如果需要返回值,则需要写一个返回类型,并且return后的返回值需要和返回类型一致。
方法名:
功能块的名字,命名规则和变量命名规则一样。
参数类型和参数名:
参数类型用于限定调用方法时传入参数的数据类型,可以为任意类型。参数类型和返回类型没有任何关系。
参数名是一个变量,用于接收调用方法时传入的数据。
参数:
参数类型和参数名组成参数。
参数可以有多个,中间用逗号隔开。
方法定义时参数称为形式参数,简称形参。方法调用时参数称为实际参数,简称实参。
形参和实参的类型、个数、顺序必须一致,名字没有要求。
执行语句:
里面可以写任何逻辑语句,表示的是此方法的具体功能。
return和返回值:
return用于结束方法以及返回方法指定类型的值。
返回值是被return语句返回的值,该值会返回给调用者。
调用
方法的调用可以通过如下方式调用:
1 类型 变量名 = 对象实例.方法名(参数);
但是在不同的情况下又有不同的区分,有的可以不写或者不能写。
是否有参数
如果有参数,那么需要在括号中填写参数,多个参数用逗号分隔: 类型 变量名 = 对象实例.方法名(参数, 参数); 。
如果没有,则不需要填写参数: 类型 变量名 = 对象实例.方法名(); 。
是否有返回值
如果方法有返回值,那么需要用接收返回值,也可以不接收,但建议用对象接收: 类型 变量名 = 对象实例.方法名(参数); 。
如果没有返回值,则不需要接收返回值: 对象实例.方法名(参数); 。
是否在当前类中使用
如果在当前类中使用,则可以直接调用,不需要通过对象实例调用: 类型 变量名 = 方法名(参数); 。
如果在其他类中使用,则需要通过对象实例调用: 类型 变量名 = 对象实例.方法名(参数); 。
如果是被statis修饰的方法,则可以通过类名调用: 类型 变量名 = 类名.方法名(参数); 。
参数传递
参数传递是指,调用方法时,将实参的值传递给形参过程。
定义方法时,参数列表中的变量,我们称为形式参数。调用方法时,传入给方法的数值,我们称为实际参数。
当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响。
当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响。
重载
同一个类中,方法名相同,参数列表不同,这种现象称为方法重载(overload)。
所谓的参数不一样,主要有两点:第一是参数的个数不一样,第二是参数的类型不一样。只要这两方面有其中的一方面不一样就可以构成方法的重载了。
重写(覆盖)
方法覆盖是说子类重新定义了父类的方法,是在两个类中,必须有相同的方法名,相同的参数列表,相同的返回类型。
被重写的方法不能拥有比父类的方法更严格的访问控制权限。
构造方法不能被继承,因此不能被重写,在子类中只能通过super关键字调用父类的构造方法。
UML类图
简介
在UML中,类使用包含类名、属性和操作且带有分隔线的长方形来表示,类图分为三层。
第一层是类的名称,如果是抽象类或接口,就用斜体表示,其中接口名称的上部会用<<interface>>修饰。
第二层是类的成员变量,通常是字段和属性。表示方式为: 可见性 名称:类型 [ = 缺省值 ] 。
第三层是类的成员方法。表示方式为: 可见性 名称(参数列表) [ : 返回类型] 。
类的成员变量和成员方法的修饰符分为+、#、-,分别表示public、protected、private。
类之间的关系
类之间的关系有实现(Realize),泛化(Generalize),关联(Associate),聚合(Aggregate),组合(Compose),依赖(Dependency)。
其中,聚合(Aggregate),组合(Compose)属于关联(Associate),是特殊的关联(Associate)关系。
关系强度(耦合度)由高到低为:泛化=实现>组合>聚合>关联>依赖。
实现(Realize)
关系:用来表示类与接口、抽象类与接口之间的关系。
箭头:用空心三角形+虚线表示,箭头指向接口。
泛化(Generalize)
关系:泛化是一种继承关系,用来表示类与类、类与抽象类、抽象类与抽象类、接口与接口之间的关系。
箭头:用空心三角形+实线表示,箭头指向父类或父接口。
关联(Associate)
关系:关联可以是双向的,也可以是单向的;关联关系可以进一步划分为聚合及组合关系。
箭头:用实线箭头表示,双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
聚合(Aggregate)
关系:聚合用来表示整体与部分的关系,是一种弱的关联关系,体现为A可以包含B,但B不一定是A的一部分。
箭头:用空心的菱形+实线箭头表示,菱形指向整体。
组合(Compose)
关系:组合用来表示整体与部分的关系,是一种强的关联关系,体现了严格的整体和部分的关系,整体和部分的生命周期一样。
箭头:用实心的菱形+实线箭头表示,菱形指向整体。
依赖(Dependency)
关系:依赖用来表示两者之间的依从关系。
箭线:用虚线箭头表示,箭头指向被依赖的对象。
完整的关系图
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 通过与C++程序对比,彻底搞清楚JAVA的对象拷贝 2020-06-11
- Java笔记:集合 2020-06-10
- java环境教程:Tomcat下载,安装,设置为Windows服务,启动 2020-06-09
- Java基础复习——类和对象 2020-06-09
- Java跨平台原理(字节码文件、虚拟机) 以及Java安全性 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash