JAVA_SE_笔记整理(面向对象一)

java面向对象一

1、面向对象思想引入

前面我们讲过数组,当有多个数组都需要遍历时,我们可以将遍历的代码封装到方法中,需要遍历时,就调用相应的方法即可,提高代码的复用性。在对数组遍历的基础上继续增加需求,比如获取最值,数值逆序等,同样需要将这些功能封装到相应的方法中。这样继续封装会发现方法越来越多,于是就想能不能将这些方法继续进行封装呢?

通过前面的讲解我们知道类是可以存放方法的,所以,我们就考虑使用类封装来这多个方法,将来再做数组的操作时,不用去找具体的方法,先找到这个类,然后使用这个类中的方法。这就是面向对象思想的编程方式。

2、面向过程思想概述

当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了,这时就开始思索,能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。

面向对象思想概述

面向对象是基于面向过程的编程思想

面向对象思想特点

是一种更符合我们思想习惯的思想

可以将复杂的事情简单化

将我们从执行者变成指挥者

角色转变

“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。

“面向对象”(Object Oriented,简称OO)是一种以事物为中心的编程思想。

3、面向对象思想举例

买电脑:

面向过程:我的了解电脑--了解我自己的需求--找对应的参数信息--去中赛格电脑--讨价还价--买回电脑

面向对象:我知道我要买电脑 -- 班长去给我买 -- 班长就买回来了

洗衣服:

面向过程:把衣服脱下--找一个盆--放点洗衣粉--加点水--把衣服扔进去--搓一搓--清洗衣服--拧干--晾起来

面向对象:把衣服脱下--打开全自动洗衣机--扔进去--一键即可--晾起来

吃饭:

面向过程:去超市买菜--摘菜--洗菜--切菜--炒菜--盛起来--吃

面向对象:上饭店吃饭,你--服务员(点菜)--厨师(做菜)--服务员(端菜)--吃

 

家常事物,买洗衣机和去饭店太不划算了,所以,找个对象。

但是,你不跟我好好学习,你将来4000,你对象8000。

4、面向对象开发,设计,特征

面向对象开发

就是不断的创建对象,使用对象,指挥对象做事情。

面向对象设计

其实就是在管理和维护对象之间的关系。

面向对象特征

封装(encapsulation)

继承(inheritance)

多态(polymorphism)

5、类与对象关系

属性 就是该事物的描述信息

行为 就是该事物能够做什么

类: 是一组相关的属性和行为的集合

对象: 是该类事物的具体体现

举例:

类:学生

对象:班长就是一个对象

类:可以理解为构筑对象的一个蓝图或者模板,是抽象的概念。

对象:是以类为模型创建的具体实例,是对类的一种具体化。

6、类的定义:

现实世界的事物

属性 人的身高,体重等

行为 人可以学习,吃饭等

Java中用class描述事物也是如此

成员变量 就是事物的属性

成员方法 就是事物的行为

定义类其实就是定义类的成员(成员变量和成员方法)

1、成员变量 和以前定义变量是一样的,只不过位置发了变化。 在类中,方法外。

2、成员方法 和以前定义方法是一样的,只不过把static去掉,后面再详细讲解static的作用。

7、类与对象案例

学生类

如何定义

按照事物到类的过程一步一步分析

如何使用

创建对象

类名 对象名 = new 类名();

对象名.成员变量

对象名.成员方法

定义人类:

 

使用人类:

 

8、内存图

对象变量中保存的不是真实的对象内容,而是对象内存所在堆地址,通过该地址位置,可以找到堆中的对象内。可以进行赋值,取值,操作。

 

9、形式参数问题:(形参问题)

基本类型作为参数 long

会将实际参数值进行赋值给形式参数。

引用类型作为参数 String

会将实际参数值(引用)赋值给形式参数(引用)。

因为引用类型参数有方式堆地址的能力,引用地址进行赋值,作用是相同的,也可以访问堆地址。

 

10、匿名对象

匿名对象:就是没有名字的对象

是对象的一种简化表示形式

匿名对象的两种使用情况

对象调用方法仅仅一次的时候

作为实际传递

 

11、封装概念

指隐藏对象的属性和实现细节,仅对外提供公共访问方式

好处:

隐藏实现细节,提供公共的访问方式

提高了代码的复用性

提高安全性

封装原则

将不需要对外提供的内容都隐藏起来。

把属性隐藏起来,提供公共方法对其访问。

private关键字

是一个权限修饰符。

可以修饰成员(成员变量和成员方法)

被private修饰的成员只在本类中才能访问。

private最常见的应用:

把成员变量用private修饰

提供对应的getXxx()/setXxx()方法

一个标准的案例的使用

private仅仅是封装的一种体现,类和方法其实也是封装体

 

12、this

this:代表所在类的对象引用

什么时候使用this呢?

局部变量隐藏成员变量

其他用法后面和super一起讲解

13、构造方法

作用:给对象的数据进行初始化的。

构造方法格式

方法名与类名相同

没有返回值类型,连void都没有。

没有具体的返回值。

注意事项:

如果你不提供构造方法,系统会给出默认构造方法。

如果你提供了构造方法,系统将不再提供。

构造方法也是可以重载的。

虽然构造方法没有返回值,但是也是可以使用return的,在最后写return; 这种做法在任何返回值为void类型的方法最后都是没有问题的。

14、类的成员方法

成员方法就是之前讲过的普通方法。

方法具体划分:

根据返回值:有返回值的方法和返回值为void类型的方法

根据形式参数:带参方法和无参方法。

15、一个基本类的标准写法:

带参构造:带有参数的构造方法。

多参构造:一个以上参数的构造方法

不带参构造:无参构造方法。

私有构造:该类不予许创造对象。或者说不需要别的类创造构造方法,而自己可以创造构造方法。

公有构造:任何人都可以new这个类,得到该类的对象。

必写无参构造:如果不写无参构造,而写了有参构造,系统不会给默认的无参构造。这样就不能使用无参构造方法,创建对象。

给成员变量赋值的方式

无参构造方法+setXxx()

带参构造方法

16、类实例化为对象的过程。

Student s = new Student(“张三”, 18);

1、加载Student.class

2、为s开辟栈内存。

3、在堆内存中为Student类的对象开辟内存。(默认值为null, 0.0, false,\u0000)

4、调用构造方法,为对象属性赋初始值。

5、将开辟的堆内存地址(引用),赋值给s变量

17、static 关键字

可以修饰成员变量和成员方法

static关键字的特点

随着类的加载而加载

优先于对象存在

该类的所有静态资源共享

这也就是我们判断是否使用静态关键字的条件

可以通过类名调用,当然可以通过对象名调用

static关键字的注意事项

在静态方法中是没有this关键字的。

静态方法只能访问(调用,使用)静态成员变量和静态成员方法。

18、静态变量和非静态成员变量的区别

所属不同:

静态变量属于类,所以也称为类变量

非静态成员变量属于对象,所有也称为实例变量(对象变量)

内存中位置不同:

静态变量存储于方法区的静态区

成员变量存储于堆内存

内存出现时间不同

静态变量随着类的加载而加载,随着类的消失而消失

成员变量随着对象的创建而存在,随着对象的消失而消失。

调用不同

静态变量可以通过类名调用,可以通过对象调用

成员变量只能通过对象名调用。

非静态方法可以调用静态方法,静态方法不可以调用非静态。

19、main方法是静态的

public static void main(String[] args) {}

public 公共的,访问权限最大,由于main是由虚拟机调用,所以权限够大。

static 静态的,不需要实例化该方法所在类,为了方法jvm调用。

void 方法的返回值,main是由JVM调用 ,返回内存给JVM没有意义。

main 方法名,不是关键字,但是JVM就是只认它。

String[] args:是一个参数,该参数为一个字符串数组,它可以接收在运行时传入的参数。

posted @ 2020-04-03 01:08  宋劉戰  阅读(166)  评论(0编辑  收藏  举报