面向对象编程(Object Oriented Programming, OOP, 面象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP达到了软件工程的三个目标:重用性、灵活性和扩展性。它主要包括三个特性:继承封装多态。
一.类和对象
类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和方法两个主要部分。对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。类和对象的关系:类是对象的抽象,对象是类的实例。
类 public class Test{
···
}
对象 Test test=new Test();
二.特殊引用“this”的使用
访问对象中的成员,是通过”对象->成员”的方式访问的,这是在对象的外部去访问对象中成员的形式,那么如果我想在对象的内部,让对象里的方法访问本对象的属性,或是对象中的方法去调用本对象的其它方法这时我们怎么办?因为对象里面的所有的成员都要用对象来调用,包括对象的内部成员之间的调用,本对象的引用this,每个对象里面都有一个对象的引用this来代表这个对象,完成对象内部成员的调用, this的本意就是“这个”的意思。
三.构造方法
大多数类都有一种称为构造函数的特殊方法。当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方法。构造函数的名称必须与类名相同。
public class Test{
public Test(){
````
}
}
四.封装性
封装性是面象对象编程中的三大特性之一,封装性就是把对象的属性和服务结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节,包含两个含义:1.把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。2.信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系。
使用private这个关键字来对属性和方法进行封装:通过private就可以把人的成员(成员属性和成员方法)封装上了。封装上的成员就不能被类外面直接访问了,只有对象内部自己可以访问。
public class Test{
private String name;
private String sex;
private void method(){
````````
}
}
五.类的继承
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。 在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。
我们用extends让子类去继承父类的特性。
public class Person{
```````
}
public class Student extends Person{
`````````
}
六.方法重载
方法重载就是定义相同的方法名,通过“参数的个数“不同或“参数的类型“不同,来访问我们的相同方法名的不同方法。其实我们所说的方法重载是子类方法覆盖父类已有的方法,我们可以在子类中定义和父类同名的方法,这样就把从父类继承过来的方法覆盖掉了。
七.Static关键字的使用
static关键字是在类中描述成员属性和成员方法是静态的;static成员能够限制外部的访问,因为static的成员是属于类的,是不属于任何对象实例,是在类第一次被加载的时候分配的空间,其他类是无法访问的,只对类的实例共享,能一定程度对类该成员形成保护。因为静态成员在第一访问时就分配了内存空间,所以再类外部不需要对象二直接使用类名就可以访问静态成员,类里面的静态方法只能访问类的静态成员。
八.抽象方法和抽象类
我们在类里面定义没有方法体的方法就是抽象方法,具体是指在方法定义中加上abstract修饰方法,并且在方法声明的时候没有大括号以及其中的内容,而是直接在方法名后加上分号。
例如:public abstract method();
有抽象方法存在的类就是抽象类,要明确的是抽象类中可以有不是抽象的方法和属性,但一个类中只要有抽象方法存在,他就是抽象类!
例如:
public abstract class Test{
String name;
String age;
public abstract getname();
public abstract setname();
}
注意:抽象类不能产生实例对象!!!
九.接口
接口相当于一种抽象类,充当父类的角色,一个子类只能有一个父类,但可以有多个接口,接口里面所有的方法必须都是声明为抽象方法,另外接口里面不能声明变量,而且接口里面所有的成员都是public权限的。所以子类在实现的时候也一定要使用public权限实现。
实例 public interface Test1{
public String name;
public void method 1();
public void method2 ();
}
接口间的继承:我们可以用extends让一个接口去继承另一个接口。
实例 public interface Test2extends Test1{
public void method3();
}
我们用implements关键字让子类去实现接口中全部的抽象方法
实例 class Test3 implements Test1{
publicvoid method 1() {
….
}
publicvoid method2 () {
….
}
}
十.多态
多态是除封装和继承之外的另一个面象对象的三大特性之一,也是面向对象程序设计的核心部分。所谓多态性是指一段程序能够处理多种类型对象的能力,体现在继承关系上就是父类引用指向子类对象,这也是多态最核心的表述。体现在接口上主要有接口作为变量和接口作为返回值类类型。