面向对象OOP

Java面向对象的学习

一、Java面向对象学习的三条主线

1、Java类及类的成员:属性、方法、构造器、;代码块、内部类

2、面向对象的三大特征:封装性、继承性、多态性、(抽象性);

3、什么是面向对象:面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)的主要思想是把构成问题的各个事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的思想得到了具体的体现。

继承:
  • 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。
  • 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。
封装:
  • 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

  • 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

  • 要访问该类的代码和数据,必须通过严格的接口控制。

  • 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

    适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

多态:
  • 多态是同一个行为具有多个不同表现形式或形态的能力。
  • 多态就是同一个接口,使用不同的实例而执行不同操作

3、其他关键字

private一种访问控制方式:私用模式
protected一种访问控制方式:保护模式
public一种访问控制方式:共用模式
abstract表明类或者成员方法具有抽象属性
class
extends表明一个类型是另一个类型的子类型,这里常见的类型有类和接口
final用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变
implements表明一个类实现了给定的接口
interface接口
native用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new用来创建新实例对象
static表明具有静态属性
strictfp用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
synchronized表明一段代码需要同步执行
transient声明不用序列化的成员域
volatile表明两个或者多个变量必须同步地发生变化
break提前跳出一个块
continue回到一个块的开始处
return从成员方法中返回数据
do用在do-while循环结构中
while用在循环结构中
if条件语句的引导词
else用在条件语句中,表明当条件不成立时的分支
for一种循环结构的引导词
instanceof用来测试一个对象是否是指定类型的实例对象
switch分支语句结构的引导词
case用在switch语句之中,表示其中的一个分支
default默认,例如,用在switch语句中,表明一个默认的分支
try尝试一个可能抛出异常的程序块
catch用在异常处理中,用来捕捉异常
throw抛出一个异常
throws声明在当前定义的成员方法中所有需要抛出的异常
import表明要访问指定的类或包
package
boolean基本数据类型之一,布尔类型
byte基本数据类型之一,字节类型
char基本数据类型之一,字符类型
double基本数据类型之一,双精度浮点数类型
float基本数据类型之一,单精度浮点数类型
int基本数据类型之一,整数类型
long基本数据类型之一,长整数类型
short基本数据类型之一,短整数类型
null
true正确
false错误
super表明当前对象的父类型的引用或者父类型的构造方法
this指向当前实例对象的引用
void声明当前成员方法没有返回值
goto保留关键字,没有具体含义
const保留关键字,没有具体含义

二、面向过程和面向对象之-----“人把大象装进冰箱”

1、面向过程:强调的是功能行为,以函数为最小的单位,考虑怎么做。

  1. 把冰箱门打开
  2. 抬起大象,塞进冰箱
  3. 把冰箱门关闭

2、面向对象:强调具备了功能的对象,以类/对象为最小的单位,考虑谁来做;

3、举例

{
​			打开(冰箱){
​				冰箱.开开();		
​			}
​			抬起(大象){
​				大象.进入(冰箱);
​			}
​			关闭(冰箱){
​				冰箱.闭合();
​			}}
 	冰箱{
​			开开(){}
​			闭合(){}}
​	大象{
​			进入(冰箱){}}

三、面向对象的两个要素:

1、类:对一类事物的描述,是抽象的、概念上的定义;

2、对象:是实际存在的该类事物的每个个体,因而也称为实例;

  • 面向对象程序设计的重点是类的设计;
  • 设计类,就是设计类的成员;

四、类中方法的声明和使用

1、方法:描述类应该具有的功能;

​ 比如:
Math类:sqrt()、random()…

​ Scanner类:nextXxx()…

​ Arrays类:sort()、binarySearch()、toString()、equals()…

举例:

public void eat(){}
public void sleep(int hour){}
public void getName(){}
public String getName(){}
public String getNation(String nation){}

2、方法的声明:权限修饰符 返回值类型 方法名(形参列表){

​ 方法体;

​ }

​ 注意:用static、final、abstract来修饰的方法;

3、说明:

  • 关于权限修饰符:默认方法的权限修饰符先都使用public

  • Java规定的4种权限修饰符:private、public、缺省、protected;

  • 返回值类型:有返回值-------------------无返回值

  • 如果方法有返回值,则必须在方法声明时,指定返回值得类型。同时,方法中需要使用return关键字来返回指定类型的变量或常量:”return 数据“。

  • 如果方法没有返回值,则方法声明时,使用void来表示。通常,没有返回值得方法中,就不需要使用return方法。但是,如果使用的话,只能”return;“表示结束此方法的意思。

  • 我们定义方法该不该有返回值?

    1、根据题目要求;

    2、凭借经验:具体问题具体分析;

  • 方法名:属于标识符,遵循标识符的规则和规范,最好”见字知意“。

  • 形参列表:方法可以声明0个、1个,或者多个。

    格式:数据类型1 形参1,数据类型2 形参2…

    我们定义方法时该不该有返回值?

    ​ 1、根据题目要求。

    ​ 2、凭借经验,具体问题具体分析。

  • 方法体:方法功能的体现。

4、return关键字的使用:

  • 使用范围:使用在方法体内。

  • 作用:1、结束方法。

    ​ 2、针对于有返回值类型的方法,使用”return 数据” 方法返回所要的数据。

    ​ 3、注意点:return关键字后面不可以声明执行语句。

  • 方法的使用中,可以调用当前类的属性和方法

  • 特殊使用:方法A中又调用了方法A:递归方法。

  • 方法中不可以定义方法。

五、类中对象的创建和使用

1、设计类,其实就是设计类的成员

​ 属性=成员变量=field=域、字段

​ 方法=成员方法=函数=method

​ 创建类的对象=类的实例化=实例化类

2、类和对象的使用(面向对象思想落地的实现)

  • 创建类、设计类的成员
  • 创建类的对象
  • 通过“对象.属性”或者“对象.方法”调用对象的结构

3、如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性。(非static的)

​ 意味着:如果我们修改一个对象的属性a,则不影响另一个对象属性a的值。

4、对象的内存解析

六、类中属性的使用

1、属性(成员变量):在类体的变量部分中定义的变量,也称为字段。

2、局部变量:也称内部变量,是指在一个函数内部或复合语句内部定义的变量

区别:

1、相同点:

  • 定义变量的格式: 数据类型 变量名=变量值;
  • 先声明,后使用
  • 变量都有其对应的作用域

2、不同点:

  • 在类中声明的位置不同

    1、属性(成员变量):直接定义在类的一对{}内;

    2、局部变量;声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量

  • 关于权限修饰符的不同

    1、属性:可以在声明属性时,指明其权限,使用权限修饰符。

    ​ 常用的权限修饰符:private、public、缺省、protected —>封装性

    ​ 目前,大家声明属性时,都使用缺省就可以了

    2、局部变量:不可以使用权限修饰符

  • 默认初始化值的情况:

    1、属性:类的属性,根据其类型,都有默认初始化值。

    ​ 整型(byte、short、int、long):0

    ​ 浮点型(float、double):0.0

    ​ 字符型(char):0 (或’\u0000’)

    ​ 布尔型(boolean):false

    ​ 引用数据类型(类、数组、接口):null

    2、局部变量:没有默认初始化值

    ​ 意味着,我们在调用局部变量之前,一定要显示赋值。

    ​ 特别的:形参在调用时,我们赋值即可。

  • 在内存中加载的位置:

    1、属性:加载到堆空间中(非static)

    2、局部变量:加载到栈空间

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值