面向对象简介
面向对象编程是一种编程方式,此编程方式需要使用 “类” 和 “对象” 来实现。
- 类,用于描述多个对象的共同特征,它是对象的模板。
- 对象,用于描述现实中的个体,它是类的实例。
类的定义
class 类名 { //属性 数据类型 变量名; … //方法 修饰符 返回值类型 方法名(参数){ } … }
创建对象
类名 对象名 = new 类名();
面向对象编程的优点
最大的好处是:代码重用
1、易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。
面向对象三大特性
一、封装
将对象的属性与方法的实现细节隐藏,仅对外提供一些公共的访问方式。
封装的体现:
- 变量:使用 private 修饰,这就是变量的封装
- 方法:也是一种封装,封装了多条代码
- 类:也是一种封装,封装了多个方法
私有成员变量:
- private修饰的成员只能在当前类中访问,其他类中无法直接访问
class Person { private int age; // 设置类私有成员变量(只能将属性变量设置为私有,局部变量不可以) private String name; public void setAge(int a) { // 对外提供设置成员变量的方法 if (a < 0 || a > 130) { // 由于是设置成员变量的值,这里可以加入数据的验证 System.out.println(a + "不符合年龄的数据范围"); return; } age = a; } public void getAge() { // 对外提供访问成员变量的方法 return age; } }
this关键字:
作用:用来区别同名的成员变量与局部变量(this.成员变量)
示例:判断是否是同龄人
class Person { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void speak() { System.out.println("name=" + this.name + ",age=" + this.age); } // 判断是否为同龄人 public boolean equalsAge(Person p) { // 使用当前调用该equalsAge方法对象的age和传递进来p的age进行比较 // 由于无法确定具体是哪一个对象调用equalsAge方法,这里就可以使用this来代替 /* * if(this.age == p.age) { return true; } return false; */ return this.age == p.age; } }