Java基础·类和对象

522 阅读8分钟

掘友们,大家好呀,我是宸道。

今天要讲解的是Java基础的类和对象,都是一些简单的知识,还是希望大家看完,就当时复习知识了,基础越牢固越好,对我们是有很大帮助的。

相关推荐

Java基础知识·数组

类和对象

7.1 理解面向对象

1.结构化程序设计:

程序 = 算法 + 数据结构。

算法第一,数据结构第二。

2.面向对象程序设计OOP:

程序 = 对象 + 对象 +…。

数据第一,算法第二。

  • 关键:让每一个对象负责执行一组相关任务。

3.面向对象编程的特性:

(1)万物皆对象。

(2)程序是一组对象彼此之间在发送消息。

(3)每个对象都有自己的内存占用,可以组装成更大对象。

(4)每个对象都有类型,特定类型的所有对象可以接收相同消息。

7.2 类和对象的概念、区别与联系

1.类/对象的概念:

类是指创建对象的模板和蓝图。

对象是指一组类似对象的共同抽象定义。

对象是程序运行时的实体,它的状态存储在fIeld(也就是变量),行为通过方法(method)实现,方法上,操作对象的内部的状态,方法是对象之间通信的主要手段,如下图所示。

2.类与对象的区别:

(1)类是一个抽象的概念,它不存在于现实中的时间/空间里,类只是为所有的对象定义了抽象的属性与行为。就好像“Person(人)”这个类,虽然可以包含很多个体,但它本身不存在于现实世界上。

(2)对象是类的一个具体。它是一个实实在在存在的东西。

(3)类是一个静态的概念,类本身不携带任何数据。当没有为类创建任何对象时,类本身不存在于内存空间中。

(4)对象是一个动态的概念。每一个对象都存在着有别于其它对象的属于自己的独特的属性和行为。对象的属性可以随着它自己的行为而发生改变。

3.类与对象之间的联系:

类与对象的关系就如模具和铸件的关系,类的实例化结果是对象,而对一类对象的抽象就是类.类描述了一组有相同特性(属性)和相同行为(方法)的对象。

4.定义类的三个步骤:

(1)定义类名。

(2)编写类的字段代表属性。

(3)编写类的方法代表行为。

5.类的建模是一个抽象封装的过程:

抽象:去掉不关注的、次要的信息而保留重要的信息。

封装:信息打包。

简单来说就是将抽象出来的属性和行为包装在一个类中。具体封装的概念在后续节中再详细讲解。

7.3 创建并使用对象

1.对象是根据类创建的。

在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。

  • 实例化:使用关键字new来创建一个对象。

  • 初始化:使用new创建对象时,会调用构造方法初始化对象。

2.示例:

public class Example{

int field1;

double field2

public static void main(String[] args){

Example e = new Example();

}

}

3.使用成员访问符 “.”操作对象:

(1)给对象属性赋值。

对象名.属性

(2)给对象发送消息即调用方法。

对象名.方法()

4.示例

Example e = new Example();

e.field1 = 100;

e.field2 = 200.0;

System.out.println(e.toString());

7.4 方法定义和使用

1.类的方法代表的是实例的某种行为(或功能)

2.定义类的方法:

访问修饰类型 方法名(参数列表) {
//方法体
}

步骤一:定义方法签名以及返回值类 步骤二:编写方法体

3.方法分类:

  • 返回值为(空)void的方法。

  • 带具体返回类型的方法。

  • 不带参数的方法。

  • 带参数的方法。

4.方法返回值:

如果方法有返回值,方法中必须使用关键字return返回该值,返回值型为该方法所定义的返回值类型。 强调:方法内可以调用其它的方法。

5.Java方法调用参数传递采用值传递方式,如图7.1所示。

(1)如果参数是基本数据类型,参数传递是将参数的数值传递给方法。

(2)如果参数是对象或数组,参数传递是将对象或数组的引用值传递给方法。

(3)传递参数时都有一个值拷贝的过程。

7.5 变量的作用域

(1)变量声明的位置决定变量的作用域。

(2)变量作用域确定可在程序中按变量名访问该变量的区域。

7.6 String对象的声明和操作

1.字符串无处不在。

  • 例:Strings = “易锦大学”

2.使用字符串来构造并存储字符串,如下图所示。

3.String对象不可变。

4.在类中每一个会修改String值的方法,都是为了创建新的String对象(包含修改后的字符串内容)。

5.String的只读特性会带来效率优化的可能。

6.字符串字面值存储于字符串池中,String对象优先指向该字符串池,避免反复生成重复的字符串实例。

7.系统对String的非修改处理效率极高,远远超过另外两个字符串类StringBuffer和StringBuilder(后续讲解)。

8.String对象的常用方法:

(1)length()--返回此字符串的长度。

(2)charAt(int index):返回指定索引处的char 值。

(3)concat(String str):将指定字符串连接到此字符串的结尾。

(4)ontains(CharSequence s):是否包含指定的字符串序列。

(5)equals(Object anObject):将此字符串与指定的对象比较。

(6)compareTo(String anotherString):按字典顺序比较两个字符串。

(7)indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。

(8)split(String regex):根据匹配给定的正则表达式来拆分此字符串。

(9)Substring(int beginIndex):截取字符串。

7.7 面向对象的要点

1.便于程序模拟现实世界中的实体

用“类”封装建模实体对象的状态和行为。

2.隐藏细节

对象的行为和状态被封装在类中,外界通过公开的接口调用类的方法来获得状态信息,不需要关注内部细节如何实现。

3.可重用

可以通过类模板,创建多个对象实例,重用类的定义代码。

7.8 Java对象的内存管理机制(了解即可)

1.使用new创建对象,在堆内存分配对象空间、初始化。

2.在方法栈中定义局部变量,持有对堆内存中对象的引用。

3.方法执行完返回,栈内存自动释放,局部变量销毁。

4.如果堆内存中对象没有变量引用它,成为垃圾,由垃圾回收器回收,释放所占堆内存。

5.Java垃圾回收器:

(1)Java运行时系统有一个垃圾回收线专程负责清除不再使用的对象,俗称垃圾回收器。

(2)垃圾回收器定期扫描内存,对于被使用的对象加上标记,按可能的路径扫描结束后清除未加标记的对象。

被回收的对象是:

①不再被任何变量引用的对象。

②引用变量自动放弃。

③人为将引用变量设置为null。

本课小结

通过本节课的学习,我们理解了面向对象,类和对象的概念、以及类和对象两者之间的区别和联系。在实际操作当中,我们明白了如何创建并使用对象,了解了方法的定义和使用、变量的作用域、String对象的声明和操作,Java对象的内存管理机制以及面向对象的优点。

习题:

一、选择题

1、下面有关面向对象编程特性描述错误的是( )

A.万物皆对象。

B.每个对象都有类型,特定类型的所有对象可以接收相同消息。

C.程序是一组对象彼此之间在发送消息。

D.每个对象的内存占用都是共享的。

实战运用

小红养了两只猫,一只叫小黑,今年2岁,黑色,另一只叫小白,今年5岁,白色。请编写一个程序。 要求:当用户输入小猫的名字时,就显示猫的名字、年龄和颜色。如果用户输入的小猫名字错误,则显示“小红没有养这只猫”。

好啦,今天的内容到这儿了结束了,,都是一些简单基础的知识,就当是复习Java知识了。大家记得做习题哦,有需要的可以自行保存、收藏。有错误欢迎纠正;或者有觉得写的不好的,欢迎指导,非常感谢。