概述面向对象
软件工程追求的目标之一就是可维护性,主要表现在三个方面:可理解性、可测试性、可修改性。
在计算机的世界中,面向对象程序设计的思想
1 对象
对象是事物存在的实体,如人类、书桌、计算机、高楼大厦等。
人们通常会将对象划为两个部分:静态部分、动态部分。
静态部分:顾名思义就是不能动的部分,例如(高矮,胖瘦,性别,年龄等),这个被称为“属性”
动态部分:具有静态部分属性会执行的动作,例如(哭泣,说话,行走),这些个被称为“行为”。
2 类
1、类就是同一类事物的统称,如果将现实世界中的一个事物抽象成对象,类就是这类对象的统称。如鸟类、家禽类、人类等。
2、类是世间事物的抽象称呼,而对象则是这个事物相对应的实体。
3、类是封装对象的属性和行为的载体,反过来说具体相同属性和行为的一类实体被称为类。
3 封装
面向对象程序设计具有以下特点:封装性、继承性、多态性。
封装:封装是面向对象编程的思想核心。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。
4 继承
继承:类与类之间同样具有关系,如一个百货公司类与销售员类相联系,类之间的这种关系被称为关联。关联主要描述两个类之间的一般二元关系。继承主要利用特定对象之间的共有属性。
5 多态
多态:其实将父类对应于子类的特征就是多态,多态的实现并不依赖具体类,而是依赖于抽象类和接口。
6.2 类
61 成员变量
在java中对象的属性也称为成员变量,成员变量的定义与普通变量的定义一样,语法如下:
数据类型 变量名称 [ = 值];
其中[ = 值]表示可选内容,即定义变量时可以为其赋值,也可以不为其赋值。
为了解成员变量,首先定义一个鸟类,成员变量对应于类对象的属性
例题6.1:
6.2.2 成员方法
在Java语言中,成员方法对应于类对象行为,它主要用来定义类可执行的操作,它是包含一系列语言的代码块。
成员方法的定义
[权限修饰符 ] [ 返回值类型] 方法名 ( [ 参数类型 参数名 ] ) [ throws 异常类型 ] {...//方法体
return 返回值 ;
}
参数可以是对象也可以是基本数据类型的变量。
如果定义的方法有返回值,则必须使用return关键字返回一个指定类型的数据,并且返回值类型要与返回的值类型一致。
注意:
要使Java代码中的成员方法无返回值,可以使用void关键字表示。
说明:如果一个方法中含有与成员变量同名的局部变量,则方法中对这个变量的访问以局部变量进行。类的成员变量和成员方法可以统称为类成员。
6.2.3 权限修饰符
当声明类时不使用public、protected 和private 修饰符设置类的权限,则这个类预设为包存取范国,印只有一个包中的类可以访问这个类的成员变量或成员方法。
Java语言中的修饰符权
6.2.4 局部变量
如果在成员方法内定义一个变量,那么这个变量被称为局部变量。
局部变量在方法被执行时创建,在方法执行结束时被销毁。局部变量在使用时必须进行赋值操作或者被初始化,否则会出现编译错误。
6.2.5 局部变量的有效范围
可以将局部变量的有效范围称为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量的结束为止。
在互不嵌套的作用域中可以同时声明两个名称和类型相同的局部变量。
6.2.6 this关键字
this 关键字用于表示本类当前的对象,当前对象不是某个 new 出来的实体对象,而是当前正在编辑的类。this 关键字只能在本类中使用。
6.3 类的构造方法
构造方法的特点如下:
(1)构造方法没有返回类型
(2)构造方法的名称要与本类的名称相同
在定义构造方法时,构造方法没有返回值,但这与普通没有返回值的方法不同,普通没有返回 值的方法使用 public void methodEx0这种形式进行定义,但构造方法并不需要使用void 关键宇进行 修饰。
构造方法的定义语法格式如下:
(1)public:构造方法修饰符
(2)Book:构造方法的名称
如果在类中定义的构造方法都不是无参的构造方法,那么编译器也不会为类设置一个默认的无参构造方法,当试图调用无参构造方法实例化一个对象时,编译器会报错。所以,只有在类中没有定义任何构造方法时,编译器才会在该类中自动创建一个不带参数的构造方法。
构造方法的特点:
例题6.3】“构造”鸡蛋灌饼
代码如下:
运行结果:
6.4 静态变量和静态方法
在介绍静态变量和静态方法之前,首先需要介绍 static 关键字,因为由 static 修饰的变量和方法粉 称为静态变量和静态方法。
在Java程序中,把共享的变量用static修饰,该变量就是静态变量。
类名.静态类成员
常见错误:同一个类的不同实例对象,共同一静态变量,如果一个类将其改变,另一个类静态变量也会更改。
虽然静态成员也可以使用“对象,静态成员”的形式进行调用,但通常不建议用这样的形式,因为这样容易混淆静态成员和非静态成员。
【例6.4】创建并调用静态属性和静态变量
运行结果如下:
【例6.5】统计顾客人数
代码如下:
最后总结以下使用 static 关键字要注意的几点:
1、在静态方法中不可以使用 this 关键字。
2、在静态方法中不可以直接调用非静态方法。
3、局部变量不可以使用 static 关键字声明。
4、主方法必须用 static 声明。
5、只有内部类可以使用 static 关键字声明。
6.5 类的主方法
主方法是类的入口点,它定义了程序从何处开始;主方法提供对程序流向的控制。
public static void main(String [ ] args ) {
//方法体
}
在主方法的定义中可以看到主方法具有以下特性:
(1)主方法是静态的,所以如要直接在主方法中调用其他方法,则该方法必须也是静态的
(2)主方法没有返回值
(3)主方法的形参为数组
【例6.6】读取主方法的参数值
6 对象
Java 是一门面向对象的程序设计语言,对象是由类实例化而来的,所有问题都通过对象来处理。 对象可以通过操作类的属性和方法来解决相应的问题,所以了解对象的产生、操作和消亡是十分必要的。
6.6.1 对象的创建
对象可以认为是在一类事物中抽象出某一个特例,可以1通过这个特例来处理这类事物出现的问题,在Java语言中通过new操作符来创建对象。
Test test=new Test();
Test test=new Test("a");
6.6.2 访问对象的属性和行为
用户使用new操作符创建一个对象后,可以使用“对象.类成员”来获取对象的属性和行为。
6.6.3 对象的引用
引用只是存放一个对象的内存地址,并非存放一个对象,严格的说引用和对象是不同的,但是可以将这种区别忽略。每个对象都是对象都是相互独立的,在内存中占据独立的内存地址。
对象的销毁
每个对象都有生命周期 ,当对象的生命周期借宿时 分配给该对象的内存地址需要被收回 在其它语言中需要用户手动回收废弃的对象 java拥有一套完整的垃圾回收机制,用户不必担心废弃的对象占用内存,垃圾回收器会自动回收无用却占用内存的资源
对象引用超过起作用范围 这个对象将被视为垃圾 如下所示:
{
Examblee =new Example();
}
对象超过作用范围将消亡
将对象赋值为null 如下所示:
{Examble e=new Examble
e =null;
}