面向对象简述
- 对象
人类解决问题的方法总是将复杂的事务简单化,于是会思考这些对象是由那些部分组成的。通常会将这些对象划分为俩个部分,静态部分和动态部分,如一个人的高低、胖瘦、年龄、性别。动态部分是具有这些属性的人做的动作,如一个人的跑、跳、哭等。 - 封装
(1)封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其现实细节,这就是封装的思想。
(2)采用封装的思想保证了类内部结构的完整性,应用该类的用户不能轻易的直接操作此数据结构,只能执行类允许公开的数据。这样就避免了外部操作对内部数据的影响,提高了程序的可维护性。 - 继承
(1)类与类之间同样具有关系,这种关系被称为关联。关联主要描述俩个类之间的一般关系,如学生类和教师类也是一个关联。俩个类之间的关系有很多种,继承是关联中的一种。
(2)当处理一个问题时,可以将一些有用的类保留下来,在遇到同样的问题时拿来复用。使用继承思想可以缩短软件开发的周期,复用那些已经定义好的类可以提高系统性能,减少系统在使用过程中出现错误的概率。
(3)继承性主要利用特定对象之间的共有属性。 - 多态
(1)其实将父类对象应用于子类的特征就是多态。
(2)多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类及相关类。该统一风格可以由父类来实现,根据父类统一风格的处理,可以实例化子类的对象。由于整个事件的处理都只依赖于父类的方法,所以日后只要维护和调整父类的方法即可,这样就降低了维护的难度,节省了时间。
(3)多态的实现并不依赖于具体类,而是依赖于抽象类和接口。
类
- 概述
(1)类就是同一事物的统称,如果将现实世界的一个事物抽象成对象,类就是这类对象的统称。
(2)类就是封装对象的属性和行为的载体,反过来说,具有相同属性和行为的一类实体被称为类。 - 成员变量
在JAVA中对象的属性也称为成员变量。
例:在Book类中定义并使用成员变量
public class Book{
private String name;
public String getName(){
int id = 0;
setName("JAVA");
return id+this.name;
}
private void setName(String name){
this.name = name;
}
public Book getBook(){
return this;
}
}
- 成员方法
(1)使用成员方法对应于类对象的行为,用上面Book类作为例子,它包含了getName()和setName()俩个方法,它分别是获取图书书名和设置图书名称的方法
(2)定义成员方法的语法格式:
权限修饰符 返回值类型 方法名(参数类型 参数名){
…//方法体
return 返回值;
}
一个成员方法可以有参数,这个参数可以是对象,也可以是基本数据类型的变量,同时成员方法有返回值和不返回任何值的选择,如果方法需要返回值,可以在方法体中使用return 关键字,使用这个关键字后,方法的执行将被终止。
(3)JAVA中的成员变量方法无返回值,可以使用void关键字表示。
(4)成员方法返回值可以是计算结果,也可以是其他想要的数值和对象,返回值类型要与方法返回值类型一致。
(5) 如果一个方法中含有与成员变量同名的局部变量,则方法中对这个变量的访问以局部变量进行。例如,变量id在getName()方法中值为0, 而不是成员变量中id的值。 - 权限修饰符
(1)私有权限(private)
private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用。
(2)默认权限(default)
类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包的类中被调用。
(3)受保护权限(protected)
protected可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被protected修饰的成员,能在定义它们的类中,同包的类中被调用。如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。
(4)公共权限(public)
public可以修饰类,数据成员,构造方法,方法成员。被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。
(5)当声明类时不使用public、protected 和private修饰符设置类的权限,则这个类预设为包存取范围,即只有一个包中的类可以调用这个类的成员变量或成员方法。 - 局部变量
局部变量是在方法被执行时创建,在方法执行结束时被销毁。局部变量在使用时必须进行复制操作或被初始化,否则会出现编译错误。
类的构造方法
(1)在类中除了成员方法之外,还存在一种特殊类型的方法,那就是构造方法。构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。
(2)构造方法的特点:
- 构造方法没有返回值
- 构造方法的名称要与本类的名称相同
(3)在定义构造方法时,构造方法没有返回值,但这与普通没有返回值的方法不同,普通没有返回值的方法使用publi void mchodEx0这种形式进行定义,但构造方法并不需要使用void关键字进行修饰。
(4)构造方法格式:
public book(){
......//构造方法体
}
静态变量、常量和方法
(1)由static 修饰的变量、常量和方法被称作静态变量、常量和方法。
(2)有时,在处理问题时会需要两个类在同一个内存区域共享一 个数据。为了解决这个问题,可以将这个常量设置为静态的。
(3)被声明为static的变量、常量和方法被称为静态成员。静态成员属于类所有,区别于个别对象,可以在本类或其他类使用类名和“.”运算符调用静态成员。
(4)语法:类名.静态类成员
例:在StaticTest类中调用静态成员
public class StaticTest{
final static double P = 3.1415; //在类中定义静态常量
static int id;
public static void method1(){ //在类中定义静态方法
//do Something
}
public void method2(){
System.out.println(StaticTest.P); //调用静态变量
System.out.println(StaticTest.id); //调用静态变量
Statictest.method1(); //调用静态方法
}
}
(5)虽然静态成员也可以使用“对象,静态成员”的形式进行调用,但通常不建议用这样的形式,因为这样容易混淆静态成员和非静态成员。