一、什么是面向对象?
现实世界中,随处可见的一种事物就是对象,对象是事物存在的实体,如人类、书桌、计算机、高楼大厦等。人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象都是由哪些部分组成的。通常都会将对象划分为两个部分,即动态部分与静态部分。静态部分,顾名思义就是不能动的部分,这个部分被称为“属性”,任何对象都会具备其自身属性,如一个人,它包括高矮、胖瘦、性别、年龄等属性。然而具有这些属性的人会执行哪些动作也是一个值得探讨的部分,这个人可以哭泣、微笑、说话、行走,这些是这个人具备的行为(动态部分)即方法,人类通过探讨对象的属性和观察对象的行为了解对象。
二、类(封装、继承、多态)
类是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。
1、封装
封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。
public class XiYouRenWu { private String name; private String weapon; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getWeapon() { return weapon; } public void setWeapon(String weapon) { this.weapon = weapon; } XiYouRenWu(String n,String w){ name=n; weapon=w; } }
2、继承
类与类之间同样具有关系,如一个百货公司类与销售员类相联系,类之间这种关系被称为关联。关联是描述两个类之间的一般二元关系,例如一个百货公司类与销售员类就是一个关联,再比如学生类以及教师类也是一个关联。两个类之间的关系有很多种,继承是关联中的一种。
3、多态
多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类以及相关类。该统一风格可以由父类来实现,根据父类统一风格的处理,就可以实例化子类的对象。由于整个事件的处理都只依赖于父类的方法,所以日后只要维护和调整父类的方法即可,这样降低了维护的难度,节省了时间。 在提到多态的同时,不得不提到抽象类和接口,因为多态的实现并不依赖具体类,而是依赖于抽象类和接口。
三、类的相关知识
成员变量:在Java中对象的属性称为成员变量,也可以称为属性。为了了解成员变量,首先定义一个图书类,成员变量对应于类对象的属性,在Book类中设置3个成员变量id、name、category,分别对应于图书编号、图书名称和图书类别这3个图书属性。
public class Book { //定义属性 //成员变量 int id; //图书编号 String name; //图书名 String category; //图书类型 }
成员方法:在Java语言中使用成员方法对应于类对象的行为。以Book类为例,它包含getName()和setName()两个方法,这两个成员方法分别为获取图书名称和设置图书名称的方法。定义成员方法的语法格式如下所示:
权限修饰符 返回值类型 方法名(参数类型 参数名){
... //方法体
return 返回值;
}
public void printName(){ //无返回值的成员方法 System.out.println(name); }
public String printCategory(){ //有返回值的成员方法 return category; }
局部变量:局部变量是在方法被执行时创建,在方法执行结束时被销毁。局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误。
可以将局部变量的有效范围称为变量的作用域,局部变量的有效范围从该变量的声明开始到该变量的结束为止。
public void Min(double a,double b,double c){ double sum; //sun为局部变量 sum=a+b+c; System.out.println(sum); }
权限修饰符:Java中的权限修饰符主要包括private、public和protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问。
如果一个类的成员变量或成员方法被修饰为private,则该成员变量只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的。
如果将类的成员变量和成员方法的访问权限设置为public,则除了可以在本类使用这些数据之外,还可以在子类和其他包中的类中使用。
如果一个类使用protected修饰符,那么只有本包内的该类的子类或其他类可以访问此类中的成员变量和成员方法。
如果一个类的访问权限被设置为private,这个类将隐藏其内的所有数据,以免用户直接访问它。如果需要使类中的数据被子类或其他包中的类使用,可以将这个类设置为public访问权限。
public class Book { //定义属性 //成员变量 private int id; //图书编号 private String name; //图书名 private String category; //图书类型 public void printName(){ //无返回值的成员方法 System.out.println(name); } public String printCategory(){ //有返回值的成员方法 return category; } }
构造方法:构造方法是一个与类同名的方法,对象的创建就是通过构造方法完成的。每当类实例化一个对象时,类都会自动调用构造方法。
构造方法的特点如下: 构造方法没有返回值。
构造方法的名称要与本类的名称相同。
public class Jidongche { private String chepai; private int chesu; private double zaizhong;
Jidongche(){ //默认存在的构造方法 }
}
public class Jidongche { private String chepai; private int chesu; private double zaizhong;
Jidongche(){ //直接在构造方法中对属性赋值,可在实例化对象时使对象的属性值初始化 chepai="XX1234"; chesu=100; zaizhong=100; } }
public class Jidongche { private String chepai; private int chesu; private double zaizhong; Jidongche(String chepai,int chesu,double zaizhong){ //带形参,实例化对象时必须传参数 setChepai(chepai); setChesu(chesu); setZaizhong(zaizhong); }