面向对象编程
所谓面向对象程序设计(OOP)就是把一个复杂的问题抽象成一些简单的对象,并通过对象之间传送信息来解决问题。Java作为一种面向对象的程序设计语言,已经在很多领域得到广泛应用。Java面向对象语言也比较容易理解,在Java语言中,任何事物几乎都可以被看做对象。
1.1对象和类
对象和类是面向对象思想中两个重要的概念。对象有自己的状态和行为,对象可以认为是类的实例。类有自己的属性和方法。面向对象程序中的代码都需要放在不同的类中,每个类可以完成某个特定的功能。
与现实世界的实体相比,程序中的对象与现实之间存在的共同点是它们都要有自己的状态和行为。面向对象方法最早的倡导者之一Booch 提出“对象拥有状态、行为和标识”。所谓对象的状态是指对象的特征,例如,地铁自动售票机有硬币投入口、纸币投入口、地铁票出口灯,这些都可以认为是地铁自动售票机特有的状态。所谓行为是指在对象上完成的特定操作,如使用地铁自动售票机买票、查看路线等。为了对具有相同行为和状态的不同对象加以区分,在内存中会分配给它一个唯一 的地址作为标识。
可以将组对象的公 共特征和行为提取出来归结到一个类中。不同对象的状态和方法也可以定义在不同的类中。类可以有自己的属性和方法。属性是指类的实例变量,该变量可以是基本数据类型或者其他的类的对象:方法是指在对象上完成的某种操作。对象和类是面向对象思想中两个重要的概念。对象有自己的状态和行为,对象可以认为是类的实例。类有自己的属性和方法。面向对象程序中的代码都需要放在不同的类中,每个类可以完成某个特定的功能。
与现实世界的实体相比,程序中的对象与现实之间存在的共同点是它们都要有自己的状态和行为。面向对象方法最早的倡导者之一Booch 提出“对象拥有状态、行为和标识”。所谓对象的状态是指对象的特征,例如,地铁自动售票机有硬币投入口、纸币投入口、地铁票出口灯,这些都可以认为是地铁自动售票机特有的状态。所谓行为是指在对象上完成的特定操作,如使用地铁自动售票机买票、查看路线等。为了对具有相同行为和状态的不同对象加以区分,在内存中会分配给它一个唯一 的地址作为标识。
可以将组对象的公 共特征和行为提取出来归结到一个类中。不同对象的状态和方法也可以定义在不同的类中。类可以有自己的属性和方法。属性是指类的实例变量,该变量可以是基本数据类型或者其他的类的对象:方法是指在对象上完成的某种操作。
类的声明
在面向对象的程序设计语言中,对象用来对现实世界中的实体进行描述,而类是用来描述具有相同属性和行为的对象的集合。例如,汽车、火车、飞机都属于交通工具,可以认为是一个个的对象,而表示交通工具的类Vehicle 就可以用来对这些表示交通工具的对象的集合进行描述。
声明一个类的方法如下:
[访问控制符] [修饰符] class类的名字[extends 父类] [implements 接口]{}
举例:
Public static class MyJava extends Master implements ComApprove{}
修饰符,访问控制符,extends,implements都是可选的。
访问控制符包括:public,private,friendly,protect。
- 一般类的访问控制符可以是public,protect。
-public关键字修饰的类可以认为是一个公共类,任何其他的类都可以访问它。
-protect关键字修饰的类可以被该类本身和同一个包下的其他类或者不同包中该类的子类都可以访问它。 - 如果是内部类, 可以使用private关键字修饰。
-prvate关键字修饰的类可以认为是一个私有类,除了该类自身外,不允许被其他类访问。 - 如果类没有访问控制符, 默认是fiendly. fiendly 修饰的类是友好型的,只能被该类本身和同包下的类访问。
- fiendly 关键字修饰的变景是友好型的,只能敏同起下的类边回,如果变量前面没有修饰符,默认是friendly.
类的成员
一个类可以包含许多变量和方法。在类中定义的变量称为成员变量或者实例变量,定义的方法称为成员方法,在成员方法中定义的变量称为局部变量。
- 变量的声明。
Java中变量声明为:
[访问控制符] [修饰符] 变量类型 变量的名称
修饰符,访问控制符,extends,implements都是可选的。
访问控制符包括:public,private,friendly,protect。
修饰符可以是static, final 和volatile.
●static 关键字修饰的变量称为静态变量,也叫类变量,它可以被该类的所有对象共享。
●final 关键字说明该变量的值不能再被修改。一般情况使用static 和final 共同定义一个常量,定义常量时,名称中所有的字母都大写,以便和变量区分。
例如:private static final int TOTAL_NUMBER=10;
●volatile是一个异步控制修饰符,在多线程中使用,使用该修饰符可以保证各线程对该变量的访问的一致性。
- 方法的声明
Java中方法的声明:
[访问控制符] [修饰符] 方法返回值类型 方法名称([参数类型 参数列表])
[throws 异常]
throws异常可选的。
修饰符可以是abstract, static, final, synchronized 和native.
-
abstract 声明的方法是抽象方法,抽象方法只有方法的声明,没有方法体。
静态的,就不可以从一个 static方法内部发出对非static 方法的调用,也不能访 问类中的成员变量,除非该成员变量也是static 的。 -
final 声明的方法不能被重写或覆流。
-
在多线程中,synchronized关键字声明方法的同步。
-
使用native声明的方法是一个本地方法,该方法不是由Java语言编写的,可以通过JNI接口调用其他语言实现对操作系统底层的访问,如C语言编写的dll座等,
类中的变量和方法声明举例:
public class MyJava{
static int addNumber=0;
private static final int TOTAL NUMBER = 10;
public static int add(){
int i=1;
addNumber=i+1;
return addNumber ;
}
public static void main(String args[]) {
add() ;
System. out.println (addNumber) ;
}
}
对象的创建和使用
在面向对象程序设计中,对象是个十分重要的概念。 在实际的程序设计中,经常需要创建对象。Java 中对象可以使用new关键词来创建。
对象的创建方法为:
类的名称 对象的名称 = new 类的名称()
----new关键词的作用是通知编译器为对象分配存储空间,调用类的构造方法将参数初始化(如果构造方法中有参数),同时会返回一个对象的引用。
例如:
String s = new String( "This is a String");//注意String,S是大写
---- 当使用new关键词创建该对象时,系统会在堆内存中为其分配存储空间,同时在栈中会有一个对象引用指向相关的变量。
创建一个对象,对象也就拥有了类定义中所包含的变量,就可以通过该类对象使用类中的方法和属性。
使用方法:
对象的名称.属性
对象的名称.方法(参数列表)
—通过“对象的名称.属性”可以实现对类的变量的访问,通过“对象的名称.方法()”可以使对象产生相应的行为。
例如:
publ1c class classTestl{
int i=1; //定义Lnt类型变量1
publlc string printstring(){
string B ="Th1s 1s printstring method"; //定义字符申
return s; //返回字村中所表示的值
}
public static void main(String[] args) {
clasoTest t = new clasaTest(); //创建classTest对象
syatem.out.println( t.i); //打印输出或员交量1的值
systom. out .printin( t.printstring(0));
//打印输出printstring方法返回的字符串```
}
}
上面的实例中,首先定义了一个成员变量i和一个方法printString().然后在main()方法中创建了一个classTest类的对象t,通过t.i获得类的成员变量i的值,使用tprintString()获得方法中字符串的内容。
上例运行结果为:
1
Th1s 1s printstring method