当前位置:文档之家› 面向对象的基本概念

面向对象的基本概念

面向对象的基本概念: 1、每个事物(对象)都有自己的静态特性和动态行为,不同事物(对象)间的相互联系和相互 作用就构成了各种不同的系统。我们把具有相似静态特性和动态行为的事物(对象)综合为一 个种类(类)。 2、对象:对象(Object)就是客观存在的任何事物。例如,一本书、一个人、一架飞机等等都 可以看做是对象。每个对象都有自己的静态特性和动态行为。例如,一台 DVD,它的“长度”、“宽 度”、“颜色”等对象的静态特性称为属性,把“播放”、“暂停”、“快进”等对象的动态行为称为方 法。 3、类:(Class)它是对象的模板。即类是对一组具有相同静态特性和相同动态行为的对象的抽象, 一个类所包含的属性和方法可以描述一组对象的共同属性和行为。类是在对象之上的抽象,对 象则是类的具体化,是类的实例。例如,对人作个定义:人是没有毛,能直立行走的动物。在 该定义中,“人”就是一个类,具有“没有毛、直立”等静态特性和“行走”等动态行为,以区别于 其它非人类的事物。而具体的张三、李四、王五等人是“没有毛且能直立行走”的人的具体的对 象。
与类变量一样,方法也分为类方法和实例方法两种。类方法描述的是类的动态行为,及时该类 没有实例对象时,也可以执行类方法。实例方法描述的是对象的动态行为,只可以在特定的对 象中执行,没有对象存在,就不能执行任何实例方法。
方法声明的格式: [存取修饰符][final][static][abstract][native][synchronized][方法返回类型]方法名 ([形式参数表变 量名])[throws 异常表] {
可执行代码(方法体); } 其中,static 表明所声明的方法是类方法。类方法也叫做静态方法。abstract 表明将该方法声明 为抽象方法,只有方法的声明部分,没有方法体。 方法体中可以的变量称为局部变量,有效期只限定于该方法内部。
8、对象 在已经定义好的类的基础上,就可以创建类的对象(实例)。 创建的过程分 3 步: 1)创建对象引用变量; 2)创建类的实例对象; 3)将对象的引用赋值给对象引用变量。
类对象的使用:通过“.”运算符对对象的成员(变量和方法)来调用。调用的一般格式: 对象名.变量名 对象名.方法名(实际参数)
9、类的继承 如果要创建一个继承父类的子类,只需在类的声明中通过 extends 关键字来指定要继承的类名就 可以了。
10、this 和 super
this 代表当前对象本身。通过 this 变量不仅可以引用当前对象的实例变量,也可以引用当前对象 的实例方法。但要注意,由于类变量和类方法不属于某一个具体的类对象,因此不能通过 this 变量引用类变量和方法,在类方法中也不能使用 this 变量。
方法重写:有时候,子类从父类中继承方法时,需要修改父类中定义的方法(即只修改方法体, 方法的参数类型、个数、顺序以及返回值都保持相同),这就是方法的重写。
总结方法重载 VS 方法重写: 1)、方法重载时同名的方法可以是参数类型不同、参数个数不同、参数顺序不同或返回值不同; 2)、方法重写时子类对父类中的方法保持名字不变,参数类型、个数和顺序不变,只改变方法 体,以使子类和父类通过相同的方法完成不同的操作; 3)、方法重写体现了动态多态性,即在程序运行时而不是在程序编译时决定执行哪一个方法; 4)、父类中实例方法是可访问时(取决于访问修饰符)才可以被重写的; 5)、类方法(静态方法 static 修饰)可以被继承,但不能被重写; 6)、方法重载和方法重写都是 OOP 多态性的表现。
new 运算符:通过 new 运算符来创建对象。创建时,Java 虚拟机将开辟一个内存空间,用于存 放对象的实例变量,并根据指定的构造方法和类的定义来初始化这些实例变量。 它的一般格式:类名 对象名=new 构造方法(实参);
构造方法:为了创建对象(类的实例),通常在类中定义一个与类的名字完全相同的方法,称之 为构造方法。注意,构造方法的名字必须与类名完全一致,且不能有返回值类型。
类的成员变量定义的一般格式: [存取修饰符][final][transient][static][volatile]类型 变量名 [=值或表达式][,变量名[=值或表达 式]…]; 其中,修饰符可以取 private,friendly,protected,public 表示不同级别的访问权限。
final 常用于声明常量。static 修饰符说明定义的是类变量,否则说明定义的是实例变量。
另外,如果方法中形式参数(变量)与实例变量重名时,为了将局部变量和实例变量区分开, 在引用实例变量时必须显示地使用 this 变量。(this.实例变量)
super 代表当前类的父类。通过 super 可以调用父类的构造方法和父类的成员(变量和方法)。
11、方法重载与方法重写 方法重载:指类的同名方法在向其传递不同的参数时可以有不同的动作,以实现不同的功能。 例如,同样是“买”这个动作,如果给定的条件不同,产生的行为就会不一样。 餐厅经理指派员工去买东西,当经理没有指明买什么时候,采购员可能默认为买菜;如果经理 指明要买大米,采购员会去买 1 袋大米;如果经理告诉要买 100 斤大米,采购员可能会到最近 的超市买 100 斤大米;如果经理告诉要去步步高超市去买,采购员会到指定的超市买 100 斤大 米;如果经理告诉要下午去买,采购员会在下午去步步高超市买 100 斤大米。
类体 } 类声明的格式:[public][abstract][final]class 类名 [extends 父类名][implements 接口表名]
类体:类体定义Biblioteka 的成员变量和方法。格式: {成员域定义部分; 方法定义部分; }
举例:定义一个描述学生的 Java 类。于是,我们要去定义学生类的属性和方法。 学生属性:姓名 sName,性别 bGender,年龄 iAge,身高 dHeight,体重 dWeight,总人数 iCounter…… 学生方法:设置学生信息 setInfo,获得学生信息 getInfo,获得学生总人数 getCounter……
6、成员变量的定义:类的对象也称为类的实例,它将包含类中定义的所有成员变量和成员方法。 类的静态特性包括两部分:类的特性和对象的特性。因此 Java 也将成员变量分为两种:类变量 和实例变量。 类变量:描述类的静态特性,被该类的所有对象所共享,即使没有创建类的对象,这些变量也 存在。 实例变量:与具体对象相关,创建一个对象的同时也创建了类的实例变量,因此每一个对象均 有自己的实例变量副本和赋值。
7、成员方法的定义:方法就是一个包含一条或多条语句的代码块,用来完成一个相对独立的功 能。方法有自己的名称以及可以重复使用的变量。用户根据“自顶向下,逐步求精”的原则,可 将一个大型和复杂的程序分解成多个易于管理的模块(这里就是方法);同时,根据面向对象设 计的原则,对类的动态行为加以描述(表现为方法)。方法一旦定义好,用户就可以根据需要在 程序多个不同的地方,通过使用方法名称来调用执行它以完成特定的功能。方法执行时,可能 会返回一个值,也可能没有返回值。没有返回值的方法只是在调用语句中完成相关操作,而有 返回值的方法通常在表达式中被调用。
方法体; } 注意:定义抽象类的主要目的就是为了创建子类,因此 abstract 类不可以是 final 类。抽象类中 可以不包含抽象方法,但包含抽象方法的类必须是抽象类。
抽象方法定义的一般格式: [存取修饰符]abstract [方法返回类型]方法名([形参表])[throws 异常表]; 抽象方法的定义只需一个声明,无需方法体,声明以;结束。
12、抽象类与抽象方法 抽象类没有任何对象,只可作为一个模板用于创建子类,以及为面向对象提供更灵活的多态机 制。 例如:交通工具类的驱动方法只作声明,而没有具体的实现细节。因此这样的类称作“抽象类”, 它的方法称作“抽象方法”(drive 方法)。
抽象类定义的一般格式: [public]abstract class 类名[extends 父类名][implements 接口表] {
4、Java 中的类:Java 是一种纯粹的面象对象程序设计语言,所有的 Java 程序都是基于类的。 类可以理解为 Java 中的一种重要的复合数据类型,是组成 Java 程序的基本要素。创建一个新类, 就是创建一个新的数据类型;实例化一个类,就是创建类的一个对象。
5、类的定义(创建):Java 中的类的定义包括类声明和类体两部分内容。一般格式是: 类声明 {
13、final 修饰符 如果不希望用户重写初始化方法或者不希望类或类中的成员变量、成员方法被修改或重写,也 可以通过 Java 提供的 final 修饰符来实现。因此,1)在类定义时,可以使用 final 修饰符使类不 被继承;2)在定义成员变量时,可通过 final 修饰符来定义为常量;3)在定义方法时,可以使 用 final 修饰符避免方法被子类重写。
相关主题