java⾯向对象程序设计优点_(⼆)Java⾯向对象程序设计第⼀章 类和对象
假设要编程解决⼀个很⼤的问题,需要写⼏万⾏代码,如果按照以前的做法,将这些代码放⼀个Java⽂件中,可以想象这个⽂件会⾮常冗长,⽽且很难维护。
因此,出现了⾯向对象的设计。
⾯向对象程序设计,英语缩写为 OOP。⾯向对象程序设计是⼀个⾥程碑,Alan Kay 因为设计了世界上第⼀个⾯向对象语⾔ Smalltalk ⽽获得图灵奖。
Java之⽗ James Gosling 结合 Internet 背景设计了完全⾯向对象的Java 语⾔。
1、对象
现实世界中客观存在的事物就称为对象。在Java的世界中,“万物皆对象”。
对象可以是有形的,如⼀辆汽车;也可以是⽆形的,如⼀项计划。
Java是⼀种⾯向对象的编程语⾔(Object Oriented Programming Language, OOPL),因此,我们要学会⽤⾯向对象的思想考虑问题和编写程序。在⾯向对象中,对象是⽤来描述客观事物的⼀个实体,⽤⾯向
对象的⽅法解决问题时,⾸先要对现实中的对象进⾏分析与归纳,出哪些对象与要解决的问题是相关的。
每⼀个对象都有⾃⼰的特征,包括静态特征和动态特征。静态特征是可以⽤某些数据来描述的特征,如⼈的姓名、年龄等。动态特征是对象所表现的⾏为或对象所具有的功能,如购物、收款等。
1.1、对象的属性和⽅法
在⾯向对象的编程思想中,把对象的静态特征和动态特征分别称为对象的属性和⽅法,它们是构成对象的两个主要因素。其中属性是⽤来描述对象静态特征的⼀个数据项,该数据项的值即是属性值。
解释:对象:⽤来描述客观事物的⼀个实体,由⼀组属性和⽅法构成。
1.2、封装
封装(Encapsulation)就是把⼀个事物包装起来,并尽可能隐藏内部细节。
对象的属性和⽅法是相辅相成、不可分割的,它们共同组成了实体对象。因此,对象具有封装性。
2、类
类定义了对象将会拥有的特征(属性)和⾏为(⽅法)。
java面向对象的特征有哪些方面类的属性:对象所拥有的静态特征在类中表⽰时称为类的属性。
类的⽅法:对象执⾏的操作称为类的⽅法。
2.1、类和对象的关系
在Java⾯向对象编程中,就⽤这个类创建出类的⼀个实例,即创建类的⼀个对象。
⼀个类为它的全部对象给出了⼀个统⼀的定义,⽽它的每个对象则是符合这种定义的⼀个实体。因此类和对象的关系就是抽象和具体的关系。
类时多个对象进⾏综合抽象的结果,是实体对象的概念模型,⽽⼀个对象是⼀个类的实例。
类是对象的类型。
3、Java是⾯向对象的语⾔
在⾯向对象程序设计中,类是程序的基本单元。Java是完全⾯向对象的编程语⾔,所有程序都是以类为组织单元的。
命名规则:
Camel (骆驼)命名法:⽅法或者变量的第⼀个单词的⾸字母⼩写,后⾯每个单词的⾸字母⼤写,如 showCenter、userName等。
Pascal (帕斯卡) 命名法:每⼀个单词的⾸字母都⼤写,如类名School等。
在Java中,定义类的属性和⽅法使⽤骆驼命名法,定义类使⽤帕斯卡命名法。
3.1、创建和使⽤对象
类的⽤作就是创建对象。由类⽣成对象,称为类的实例化过程。⼀个实例也就是⼀个对象,⼀个类可以⽣成多个对象。
语法: 类名 对象名 = new 类名();
⾯向对象的优点:
(1)与⼈类的思维习惯⼀致:⾯向对象的思维⽅式从⼈类考虑问题的⾓度出发,把⼈类解决问题的思维过程转变为程序能够理解的过程。⾯向对象程序设计能够让我们使⽤“类”来模拟现实世界中的抽取概念,⽤“对象”来模拟现实世界中的实体,从⽽计算机解决现实问题。
(2)信息隐藏,提⾼了程序的可维护性和安全性:封装实现了模块化和信息隐藏,即将类的属性和⾏为封装在类中,这保证了对它们的修改不会影响到其他对象,有利于维护。同时封装使得在对象外部不能随意访问对象的属性和⽅法,避免了外部错误对它的影响,提⾼了安全性。
(3)提⾼了程序的可重⽤性:⼀个类可以创建多个对象实例,增加了重⽤性。
本章总结:
对象是⽤来描述客观事物的⼀个实体,由⼀组属性和⽅法构成。
类定义了对象将会拥有的特征(属性)和⾏为(⽅法)。
类和对象的关系是抽象和具体的关系。类是对象的类型,对象是类的实例。
对象的属性和⽅法被共同封装在类中,相辅相成,不可分割。
⾯向对象程序设计的优点如下:
与⼈类的思维习惯⼀致
隐藏信息,提⾼了程序的可维护性和安全性。
提⾼了程序的可重⽤性
第⼆章 类的⽆参、带参⽅法
1、成员变量和局部变量
成员部门:在类中定义的变量称为类的成员变量。如果其它类的⽅法要访问它,必须⾸先创建该类的对象,然后才能通过操作符 “.” 来引⽤。
局部变量:在⽅法中定义的变量称为局部变量。它的作⽤域仅仅在定义该变量的⽅法内,因此只有在这个⽅法中能够使⽤。
局部变量可以和成员变量同名,并且在使⽤时,局部变量具有更⾼的优先级。
2、JavaDoc注释
/**
*
Title: ESPModelConvert
*
Description: 模型转换
* @author liyh
* @version 1.0
*/
称为JavaDoc注释
标签
含义
标签
含义
@author
作者名
@version
版本标识
@parameter
参数及其意义
@since
最早使⽤该⽅法/类/接⼝的JDK版本
@return
返回值
@throws
异常类及抛出条件
3、在定义⽅法和调⽤⽅法时,把参数分别称为形式参数和实际参数,简称形参和实参。形参是在定义⽅法时对参数的称呼,⽬的是定义⽅法需要传⼊的参数个数和类型。
实参是调⽤⽅法时传递给⽅法处理的实际的值。
调⽤⽅法时,需要注意以下两点:
先实例化对象,再调⽤⽅法。
实参的类型、数量、顺序都要与形参⼀⼀对应。
4、深⼊理解带参⽅法
数组作为参数的⽅法
对象作为参数的⽅法
5、包名
package 包名;
5.1、导⼊包
import 包名.类名;
第三章 对象和封装
⾯向过程的核⼼是函数,以功能为中⼼,实现了函数级别的代码重⽤。
⾯向对象的核⼼是封装了属性和⽅法(⾏为)的类,以数据为中⼼,实现了类级别的代码重⽤,⾯向对象因为采⽤了类,所以具有继承和多态特性,可以进⼀步重⽤代码和简化编程,⽽⾯向过程中没有继承和多态特性。
1、构造⽅法及其重载
构造⽅法的名称和类名相同,没有返回值类型。构造⽅法的主要作⽤就是在创建对象时执⾏⼀些初始化操作,如给成员属性赋值。
重载:⽅法名相同、参数列表不同,称为构造⽅法的重载。
如果同⼀个类中包含了两个或两个以上的⽅法,他们的⽅法名相同,⽅法参数的个数或者参数类型不同,则称为⽅法被重载了,这个过程称为⽅法重载。
成员⽅法和构造⽅法都可以进⾏重载。
注意:⽅法重载的判断依据如下:
必须在同⼀个类⾥。
⽅法名相同。
参数列表(⽅法参数的个数或参数类型)不同。
与⽅法返回值和⽅法修饰符没有任何关系。
在使⽤ this 调⽤ ⾃⾝的其他构造⽅法时,只能作为第⼀条语句。
2、static 修饰符
static 可以⽤来修饰属性、⽅法和代码块。static修饰的变量属于这个类所有,即由这个类创建的所有对象共⽤同⼀个static 变量。通常把static 修饰符的属性和⽅法称为类属性(类变量)和类⽅法。
不使⽤static修饰的属性和⽅法属于单个对象,通常称为实例属性(实例变量)和实例⽅法。
注意:
静态⽅法中不能使⽤this 和 super 关键字。
在⽅法中不可以定义static变量,也就是说,类变量不能是局部变量。
结论:构造⽅法没有返回值类型,如果有,则不是构造⽅法,⽽是和构造⽅法同名的成员⽅法。
成员变量和局部变量同名时,必须使⽤ this。
this.name = name;
注意:this不能调⽤类变量和类⽅法,也不能调⽤局部变量。
3、封装
封装的具体步骤:修改属性的可见性来限制对属性的访问;为每⼀个属性创建⼀对赋值(setter)⽅法和取值(getter)⽅法,⽤于对这些属性的存取;在赋值⽅法中,加⼊对属性的存取控制语句。
封装的好处:隐藏类的实现细节;让使⽤者只能通过程序规定的⽅法来访问数据;可以⽅便地加⼊存取控制语句,限制不合理的操作。
封装时会⽤到多个权限控制符来修改成员变量和⽅法,区别如下。
private:成员变量和⽅法只能在其定义的类中被访问,具有类可见性。
默认:成员变量和⽅法只能被同⼀个包⾥的类访问,具有包可见性。
protected:可以被同⼀个包中的类访问,被同⼀个项⽬中不同包中的⼦类访问。
public:可以被同⼀个项⽬中的所有类访问,具有项⽬可见性,这是最⼤的访问权限。
第四章 继承
1、语法
修饰符 SubClass extend SuperClass {
// 类定义部分
}
继承是⾯向对象的三⼤特性之⼀,是Java中实现代码重⽤的重要⼿段之⼀。Java中⽀持单继承,即每个类智能有⼀个直接⽗类。继承表达的是is a的关系,或者说是⼀种特殊和⼀般的关系。
在Java中,⼦类可以从⽗类中继承到哪些“财产”呢?
继承public 和 protected 修饰的属性和⽅法,⽆论⼦类和⽗类是否在同⼀个包⾥。
继承默认权限修饰符修饰的属性和⽅法,但是⼦类和⽗类必须在同⼀个包⾥。
⽆法继承private 修饰的属性和⽅法。
⽆法继承⽗类的构造⽅法。
访问修饰符
访问修饰符
本类
同包
⼦类
其他
private
√
默认
√
√
protected
√
√
√
public
√
√
√
√
2、重写和继承关系中的构造⽅法
在⼦类中可以根据需求对从⽗类继承的⽅法进⾏重新编写,称为⽅法的重写或者⽅法的覆盖(overriding).
⽅法重写必须满⾜如下要求:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论