快捷搜索:  汽车  科技

java面向对象学习心得总结(从零开始学JAVA-04.JAVA面向对象入门第一季)

java面向对象学习心得总结(从零开始学JAVA-04.JAVA面向对象入门第一季)封装(Encapsulation);三大特征:---------------------------------------------------------面向对象更加符合我们常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。当然上述例子仅仅只是说明了面向对象的一个特征——封装。除此之外面向对象还有两大特征,我们在具体讲解到的时候再做分析。

java面向对象学习心得总结(从零开始学JAVA-04.JAVA面向对象入门第一季)(1)

今天讲解目录来了:

java面向对象学习心得总结(从零开始学JAVA-04.JAVA面向对象入门第一季)(2)

面向对象思想:

面向过程(PO):一种较早的编程思想,顾名思义该思想是站在过程的角度思考问题,强调的就是功能行为 功能的执行过程 即先干啥 后干啥。而每一个功能我们都使用函数(类似于方法)把这些步骤一步一步实现,使用的时候依次调用函数就可以了。

面向对象的优势和特点:

---------------------------------------------------------

面向对象更加符合我们常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。

当然上述例子仅仅只是说明了面向对象的一个特征——封装。除此之外面向对象还有两大特征,我们在具体讲解到的时候再做分析。

三大特征:

封装(Encapsulation);

继承(Inheritance);

多态(Polymorphism);

封装是指将对象的实现细节隐藏起来,然后通过公共的方法来向外暴露该对象的功能。

继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类是一种特殊的父类,能直接或间接获得父类里的成员。

多态是可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对象在运行时可能表现出不同的行为特征。

注意:

千万不要误解为面向对象一定就优于面向过程的设计.

面向对象是基于面向过程的 永远不可能取代面向过程.

对象和类的关系:

你在街上看到一个美女,就可以把这个美女看成一个对象,那么该对象有两方面的定义:状态和行为。

美女有状态,如身高,年龄,皮肤颜色等等;美女还有行为,如走路,说话,抛媚眼等等。

作为基本定义,对象(object)可以定义成包含数据(状态)和行为的一个实体,对象也称为实例(instance)。

-----------------------------------------------------------------------------------------------------

对象:

对象是人们要进行研究任何事物,一切事物都可以认为是对象。

对象具有状态和行为:

对象具有状态,比如姓名 年龄 性别等。

对象还有行为,比如吃饭 睡觉 写代码等。

-----------------------------------------------------------------------------------------------------

类(类型):

具有相同特性(数据元素)和行为(功能)的多个对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。

类具有特性,对象的状态,用成员变量来描述。

类具有功能,对象的行为,用方法来描述。

-----------------------------------------------------------------------------------------------------

什么是类:类是对象的类型/模板。创建一个对象,就是使用一个类作为构建该对象的基础。

-----------------------------------------------------------------------------------------------------

在编程的世界:是先有类 再有对象 对象是根据类创建出来的.

java面向对象学习心得总结(从零开始学JAVA-04.JAVA面向对象入门第一季)(3)

类的定义

案例:分析出对象和类,以及对象具备的状态和行为。

---------------------------------------------------------------

春哥,现年31岁,身高175cm,体重55kg,会跳舞,会唱歌;

凤姐,现年30岁,身高145cm,体重48kg,会跳舞,会唱歌;

---------------------------------------------------------------

名词解析法:

名词:对象/对象的状态

动词:对象的功能/行为

---------------------------------------------------------------

人类:

状态:

名字

年龄

身高

体重

行为:

唱歌

跳舞

---------------------------------------------------------------

在程序中 对象的状态使用成员变量表示 对象的行为使用方法表示..


类的定义:

class 类名

{

0 ~ N个成员变量(字段(Field));

0 ~ N个方法

}

注意:

1:若类使用public修饰 则当前所在的文件名必须和类名相同.

在以后的开发中 都是一个文件一个类 都建议使用public修饰.

2:类型必须符合标识符的命名规范(使用名词 首字母大写.).

java面向对象学习心得总结(从零开始学JAVA-04.JAVA面向对象入门第一季)(4)


对象基本操作:

对象的创建和使用:

在程序中 必须先有类 再有对象(先得有模板 再有根据模板制造出来的个体).

1):创建对象 :类 对象名 = new 类名();

2):对象调用方法:对象名.方法名([实参]);

3):对象操作字段

赋值: 对象名.变量 = 值;

取值: 变量 = 对象名.变量;

4):打印对象:

默认输出:Servant@659e0bfd 对象的类型@十六进制的hashCode

和数组一样 看不到对象中的数据 期待我们讲解Object类.

5):比较对象:

每次new 都会在堆内存开辟新的内存空间.

而"==" 在比较引用类型的时候 比较的是引用的内存地址值.

6):对象的生命周期.

从使用new在堆中开辟内存开始 到垃圾回收期回收之间.

垃圾:内存中的某一块空间没有被某一个变量所引用.

垃圾产生时 不一定运行GC GC是自行调度 程序员控制不了.

7):匿名对象.

没有名字的对象 就是创建对象时 没有赋给一个变量.

new Servant();创建一个匿名对象

只在堆中开辟内存空间 不会被栈中的变量所引用.

特点:匿名对象只能使用一次 就是刚刚创建的这一次.

对象的实例化过程:

java面向对象学习心得总结(从零开始学JAVA-04.JAVA面向对象入门第一季)(5)


构造器:

我们在创建Student对象 代码如下:

Student s1 = new Student();

其实我们在创建对象的时候 都是调用构造方法 构造函数/构造器/构造子.

--------------------------

构造器:主要用于创建对象并返回对象和初始化对象数据.

--------------------------

构造器的特点:

类都有一个默认构造器 当不显示的定义构造器的时候 编译器会在编译的时候 提供一个默认构造器.

1):构造器的名字必须和当前所在类的类名相同.

2):不需要定义返回值类型 更加不能使用void作为返回.构造器的目的在于创建和返回当前类的对象 即使要编写返回类型 也应该是当前类名 如:Student Student(){} 既然和当前类名相同 就规定统统省略.

3):构造器中不需要使用return来返回当前构造的对象.

-----------------------------

1):无参数 无方法体.

2):构造器的访问修饰符和当前类的修饰符相同(是否有public).

3):一旦在类中显示地提供了构造器 则默认的构造器就不再提供了.

推论: 一个类至少有一个构造器(即使没有自定义 编译器也会创建一个默认的).

-----------------------------------------

public class Student{

默认的构造器

public Student(){}

}

---------------

class Student{

默认的构造器

Student(){}

}

-------------------------------------------------------

方法的重载:在同一个类中 方法同名 但是参数列表不同.

解决了相同的功能方法 因为参数列表不同 而带来参数名不同的问题.

构造器重载:

不同类的构造器是不相同的. 对于构造器重载来说 肯定是在同一个类中 并且构造器都是和类名相同.

所以在同一个类中的多个构造器就必须参数列表不同(参数类型 参数个数 参数顺序).

-------------------------------------------------------

Student(){}

Student(String name){}

Student(String name int age){}

上述的构造器就是重载关系.

-------------------------------------------------------

static修饰符:

类是用来描述多个对象共同的状态和行为的 就拿人的姓名.

看右图 春哥和凤姐这个两个对象 都有拥有姓名 年龄身高和体重等状态 但是不同对象的状态值却不一样.此时发现 我们所描述的信息是针对于某一个具体对象的 对象不同 那么名字是可能不一样的.

---------------------------------------------------------------

现在 我想描述一类事物的状态和行为 比如:人类 有总人数的状态 有毁灭的行为.

可能有人认为 毁灭是一个行为 那么可以在Person类中 定义一个方法(destory) 若想毁灭人类 则调用该方法即可.但是新的问题又来了?到底谁来调用destory方法?

春哥.destory();

凤姐.destory();

都不对的 因为他们只能表示自己 不能表示人类.

----------------------------------------------------------------

我们平时在类中定义的成员变量和方法 都是对象的状态和行为.

那如何表示 一类事物的状态和行为呢?不是某一个个体(对象)的.

此时 为了解决该问题 咱们得学习一个修饰符:static.

-----------------------------------------------------------------

static可以修饰成员变量(字段) 可以修饰方法等 就表明该字段或该方法属于类 而不属于某一个对象.

-----------------------------------------------------------------

类成员(static修饰成员)的特点:

1):随着类被加载进JVM而同时也最初始化和在内存中分配空间.

2):优先于对象存在.(对象是通过new出来的.)

3):被该类的所有对象所共享.

该状态/行为是整个人类的 那么每一个人都是拥有该状态/行为的.

4):直接使用类名调用即可.

人类毁灭: Person.destory();

类成员和实例成员的访问:

------------------------------------------------

类 成员:使用static修饰的成员变量/方法 属于类 所以可以直接使用类名访问.

实例成员:没有使用static修饰的成员变量/方法 属于对象.必须使用对象来访问.

----------------------------------------------------------------------------------

访问规则:

1):静态方法只能访问静态的成员变量/方法 不能访问非静态的成员变量/方法(属于对象).

静态成员优先于对象存在.

2):非静态方法可以访问非静态成员变量/方法 也可以访问静态的成员变量/方法.

因为底层使用对象访问的.

3):对象可以访问静态成员 但是不推荐 因为底层依然使用类名在调用.

4):类可以访问静态成员 类不能访问非静态成员(成员变量/方法).

-----------------------------------------------------------------------------------

一般的 在开发中类成员如何使用:

一般的 在开发中工具类的工具方法都使用static修饰 如此的好处 直接使用工具类名.方法就可以调用 使用更加简单.

数组的工具类:java.util.Arrays中的工具方法.

一般的 若静态方法需要访问一个成员变量 此时才把成员变量使用static修饰.

学习大纲:

java面向对象学习心得总结(从零开始学JAVA-04.JAVA面向对象入门第一季)(6)





猜您喜欢: