目录
6.1 概述面向对象
软件工程追求的目标之一就是可维护性,主要表现在三个方面:可理解性、可测试性、可修改性。
在计算机的世界中,面向对象程序设计的思想
6.1.1 对象
对象是事物存在的实体,如人类、书桌、计算机、高楼大厦等。
人们通常会将对象划为两个部分:静态部分、动态部分。
静态部分:顾名思义就是不能动的部分,例如(高矮,胖瘦,性别,年龄等),这个被称为“属性”
动态部分:具有静态部分属性会执行的动作,例如(哭泣,说话,行走),这些个被称为“行为”。
6.1.2 类
1、类就是同一类事物的统称,如果将现实世界中的一个事物抽象成对象,类就是这类对象的统称。如鸟类、家禽类、人类等。
2、类是世间事物的抽象称呼,而对象则是这个事物相对应的实体。
3、类是封装对象的属性和行为的载体,反过来说具体相同属性和行为的一类实体被称为类。
6.1.3 面向对象程序设计的特点
面向对象程序设计具有以下特点:封装性、继承性、多态性。
1、封装:封装是面向对象编程的思想核心。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。
2、继承:类与类之间同样具有关系,如一个百货公司类与销售员类相联系,类之间的这种关系被称为关联。关联主要描述两个类之间的一般二元关系。继承主要利用特定对象之间的共有属性。
3、多态:其实将父类对应于子类的特征就是多态,多态的实现并不依赖具体类,而是依赖于抽象类和接口。
6.2 类与对象
java中定义类使用class关键字,其语法如下:
class 类的名称{
//类的成员
//类的成员方法
}
6.2.1 成员变量
在java中对象的属性也称为成员变量,成员变量的定义与普通变量的定义一样,语法如下:
数据类型 变量名称 [ = 值];
其中[ = 值]表示可选内容,即定义变量时可以为其赋值,也可以不为其赋值。
为了解成员变量,首先定义一个鸟类,成员变量对应于类对象的属性
pubilc class Bird {
String wing; //翅膀
String claw; //爪子
String beak; //啄
String feather; //羽毛
}
6.2.2 成员方法
在Java语言中,成员方法对应于类对象行为,它主要用来定义类可执行的操作,它是包含一系列语言的代码块。
1、成员方法的定义
[权限修饰符 ] [ 返回值类型] 方法名 ( [ 参数类型 参数名 ] ) [ throws 异常类型 ] {
...//方法体
return 返回值 ;
}
参数可以是对象也可以是基本数据类型的变量。
定义一个showGoods方法,用来输出库存商品信息,代码如下:
pubilc viod showGoods() {
System.out.println("库存商品名称:");
System.out.println(FullName);
}
如果定义的方法有返回值,则必须使用return关键字返回一个指定类型的数据,并且返回值类型要与返回的值类型一致。
2、成员方法的参数
调用方法时可以给该方法传递一个或多个值,传给的方法的值叫做实参,在方法内部,接收实参的变量叫做形参,形参的声明语法于变量的声明语法一样。形参只在内部有效。
参数主要有3种,分别为值参数、引用参数和不定长参数。
(1)值参数
值参数表面实参与形参之间的按值传递。
public record Book() {
public static void main(String[] args) {//主函数
Book book = new Book();//创建对象
int x = 30;//定义实参变量x
int y = 40;//定义实参变量y
System.out.println("运算结果:" + book.add(x, y));//输出运算结果
System.out.println("实参x的值:"+x);//输出实参x的值
}
private int add(int x, int y)//计算两个数的和
{
x = x + y;//对x进行加y操作
return x;//返回x
}
}
(2)引用参数
如果在给方法传递参数时,参数的类型是数组或者其他引用类型那么在方法中参数的修改会反应到原有的数组或者其他引用类型上,这种类型
public class RefTest {
public static void main(String[] args) {//主函数
// TODO 自动生成的方法存根
RefTest refTest = new RefTest();//创建对象
int[] i = { 0, 1, 2 }; //定义一维数组,作为方法的实参
//输出一维数组的原始元素值
System.out.print("原始数据:");
for (int j = 0; j < i.length; j++)
{
System.out.print(i[j]+" ");
}
refTest.change(i);//调用方法改变数组元素的值
System.out.print("\n修改后的数据:");
for (int j = 0; j < i.length; j++)
{
System.out.print(i[j]+" ");