1、Java 基础培训,第5章 Java面向对象编程基础,2,5.1 面向对象的几个概念,5.1.1 对象、类与实体对象的概念是面向对象技术的核心所在。以面向对象的观点看来,所有的面向对象的程序都是由对象来组成的,这些对象首先是自治、独立的,同时它们还可以互相通信、协调和配合,从而完成整个程序的任务和功能。 对象现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。 类同种对象的集合与抽象。 关系 类是一种抽象的数据类型,是所有具有一定共性的对象的抽象。 属于类的某一个对象则被称为类的一个实例,是类的一次实例化的结果。,3,5.1 面向对象的几个概念,面向对象技术的一个关键的设计思想就是要让计算
2、机逻辑 来模拟现实世界的物理存在。,4,5.1 面向对象的几个概念,5.1.2 对象的属性 状态属性(静态属性)主要指对象内部所包含的各种信息,也就是变量。每个对象个体都具有自己专有的内部变量,这些变量的值标明了对象所处的状态。 例:每一台电视机都有如下状态信息:种类、品牌、大小、颜色 行为属性(对象的操作)主要表述对象的动态属性,操作的作用是设置或改变对象的状态。对象的方法一方面把对象的内部变量包裹、封装、保护起来,使得只有对象自己的方法才能操作这些内部变量;另一方面,对象的方法还是对象与外部环境和其他对象交互通信的接口,对象的环境和其他对象可以通过这个接口来调用对象的方法,操纵对象的行为和
3、改变对象的状态。 例:每一台电视机都有开、关操作,5,5.1 面向对象的几个概念,标志对象的名称,是一个对象区别于其他对象的标志。总结: 对象的静态属性表示它所处状态。 对象操作:用来改变对象的状态以达到特定的功能。 对象最主要的特点是以数据为中心,它是一个集成了数据和其操作的独立、自治的逻辑单位。,6,5.2.1 类的定义,类头定义格式 修饰符 class 类名 extends 父类名 implements 接口名列表 例: class square private double length;private double width; 下页详细说明,5.2.1 类的定义,Java的修饰符,
4、分为访问控制符和非访问控制符。访问控制符:public、private、protected非访问控制符:abstract、static、finalJava的主类定义时必须被修饰为public,当缺省此选项时,则定义的类为非公有的、非抽象、非最终的。 class为Java的关键字,定义一个类时,必须用此关键字。类名为新定义的类的名称。 extends父类名,说明定义的类是一个已经存在的类的子类。在Java中,通过extends关键字来实现类之间的继承。 implements接口名列表,说明定义的类将要实现的接口,接口可以是一个,也可是多个。 类头定义的格式中,带方括号的选项为可选项。用户定义类时
5、,根据类的性质有目的地进行选择。,8,5.2.2 类的成员,Java的类体是由一对大括号括起来的成员方法和成员属性组成的。 类的成员属性(类的静态属性)描述该类的内部信息 声明类属性为简单变量的格式如下: 修饰符 变量类型 变量名 =变量初值; 声明类属性为对象的格式如下: 修饰符 类名 对象名 =new 类名(实参表); 例:String s;Label import =new Label(“请输入一个数:”); 类的成员方法(成员函数)类所具有的功能和操作 格式: 修饰符 返回值类型 方法名称(参数表)/方法体; ,9,5.2 类,例: class Rectangleprivate dou
6、ble length;private double width;void setDim(double w,double l)width=w;length=l;double area()return length*width; ,10,5.2.3 类的构造方法,创建类的对象时,利用new关键字和一个与类同名的方法来完成,这个方法就是构造方法。 说明: 构造方法的名与类名相同。 构造方法没有返回值类型。 构造方法的主要作用是完成对类对象的初始化操作。 构造方法不能由编程人员显式地直接调用,在创建一个类的新对象的同时,系统会自动调用该类的构造方法为新对象初始化。 每一个类可以有零个或多个构造方法。当
7、一个类定义多个构造方法时,称为构造方法的重载。,11,5.2.3 类的构造方法,例: class Rectangledouble length;double width;Rectangle (double w, double l) width=w;length=l;double area()return length*width; ,12,5.2.3 类的构造方法,说明: 每个类在没有定义构造方法时,都有一个默认的构造方法。这个默认的构造方法没有形式参数,也没有任何具体语句,不能完成任何操作,但在创建一个新对象时,如果没有用户自定义的构造方法,则使用此默认的构造方法对新对象进行初始化。 可以创
8、建自己的构造方法来创建实例对象,同时对实例对象进行初始化,即构造方法可以带参数,也可以重载。 当一个类有自定义的构造方法时,类的默认的构造方法无效,不能再调用默认构造方法来创建对象,但程序中一定要用到默认的构造方法来实例化对象时,则必须在程序中显式地定义一下类默认的构造方法。 定义的格式如下:修饰符 类名() 即没有形式参数,方法体为一对空的大括号。,13,5.3.1 对象与类的关系,类是同种对象的抽象集合,是创建对象的模板。类定义了对象的属性和行为。 对象是类的一次实例化的结果对象通常有下面几个使用过程: 对象的创建。 对象的使用。 对象的清除。,14,5.3.2 对象的创建,声明一个类的对
9、象和为对象分配内存空间分开来定义。 格式:classname1 c1;c1 = new classname1(); 声明一个类的对象和分配内存空间合为一条语句。 格式: classname2 c2 = new classname2(); 同时声明一个类的两个对象,对其中一个对象用new分配内存空间,而另一个则是第一个对象的备份。 格式: classname3 c3; calssname3 c4; c3 = new classname3(); c4 = c3;,15,5.3.3 对象的引用,对对象的各个成员进行访问格式:对象名.变量名对象名.方法名() 例: class Computer int
10、 speed=133;int crt=14;void printInfomation() System.out.println(“speed is “+speed);System.out.println(“crts size is:”+crt); ,Computer c1 = new Computer(); c1.printInfomation();,16,5.4.1 Java的修饰符-访问控制符, 普通类的访问控件符,属性与方法的访问控制符,17,5.4.1 Java的修饰符-访问控制符,实现类的封装 如果外面的程序可以随意修改一个类的成员属性,会造成不可预知程序错误 在定义一个类成员(属性
11、和方法)时,使用private关键字,说明这个成员的访问权限 为了实现良好的封装性,通常将类的成员属性声明为private,再通过public方法来对这个属性时行访问,一般有读取get,赋值操作set类封装的优点 隐藏类的实现细节 让使用只能通过事先定义好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合法操作 便于修改,增强代码的可维护性,18,5.4.2 Java的修饰符-非访问控制符,static 修饰符可以修饰属性,方法 说明: 用static修饰的成员称为类成员。 类成员是所有实例对象共享的。随类的定义的第一次加载而分配内存。,19,5.4.2 Java的修饰符-非访问控制符
12、,abstract修饰符抽象修饰符,可以修饰类、方法 抽象类不能创建对象 例abstract class picture int plength;int pwidth;abstract void drawpictrue();void clearpicture() System.Out.println(“clear”) 抽象方法 格式: abstract 方法名(); 说明: 抽象类为超类,由子类实现其中的方法。 子类继承抽象类,必须实现抽象类定义的所有抽象方法。 抽象类中的抽象方法不能是私有的(private),也不能是静态的(static)。,20,5.4.2 Java的修饰符-非访问控制符,final修饰符 -最终修饰符,可以修饰类、属性、方法 最终类-不能被继承 例:final class b 最终属性即常量 例:final int a=5; 最终方法-不能被重写 例:final int f(),21,本章结束,