面向对象(一)

89 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第19天,点击查看活动详情

(一)面向对象上

1.面向过程与面向对象

1.1面向对象的三条主线

  1. Java类及类的成员 :属性、方法、构造器、代码块、内部类
  2. 面向对象的三大特征 :封装性,继承性,多态性,(抽象性)
  3. 其它关键字:this\super\static\final\abstract\interface\package\import等

1.2面向过程(POP) 与 面向对象(OOP)

  • 二者都是一种思想,面向对象是相对于面向过程而言的。
  • 面向过程,强调的 是功能行为,以函数为最小单位,考虑怎么做。
  • 面向对象,将功能封装进对 象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。 面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如 抽象、分类、继承、聚合、多态等。

1.3例子:人把大象装进冰箱

1.面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。
 *      》把冰箱门打开
 *      》抬起大象,塞进冰箱
 *      》把冰箱门关闭
2.面向对象,强调具备了功能的对象,以类、对象为最小单位,考虑谁来做
 * 人{
 *      打开(冰箱){
 *          冰箱.开门();
 *      }   
 *      抬起(大象){
 *          大象.进入(冰箱);
 *      }   
 *      关闭(冰箱){
 *          冰箱.闭合();
 *      }  
 * }
 * 
 * 冰箱{
 *      打开(){}
 *      闭合(){}
 * }
 * 
 * 大象{
 *      进入(冰箱){
 *          进入的具体操作;
 *      }
 * }

2.Java语言的基本元素:类和对象

2.2.1类(Class)和对象(Object)

是面向对象的核心概念。面向对象程序设计的重点是类的设计,类的设计,其实就是类的成员的设计。

  • 类是对一类事物的描述,是抽象的、概念上的定义
  • 对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。

2.1.2设计类,其实就是设计类的 成员 = 属性 + 方法
  1. 属性 = field = 成员变量 = 域、字段
  2. 方法 = 成员方法 = Method = 函数 = 行为

3.对象的创建和使用

如果创建了一个类的 多个对象,对于类中 定义的属性,每个对 象都拥有各自的一套 副本,且互不干扰。

类的访问机制

  • 在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。 (例外:static方法访问非static,编译不通过。)
  • 在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中 定义的成员。

3.1对象的创建

Person p1 = new Person();//执行完后的内存状态。其中类定义如下:
class Person{
    int age;
    void shout(){
        System.out.println(“oh,my god! I am ” + age);
    }
}
​
3.1.1类的实例化,即创建类的对象,类和对象的使用(面向对象思想落地的实现)

创建类的对象 = 类的实例化 = 实例化类

  1. 创建类,设计类的成员
  2. 创建类的对象
  3. 调用属性:“对象.属性”,调用方法:“对象.方法”
3.1.2如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属性。(非static的)
  • 意味着,我们修改一个对象的属性a,不影响另外其他对象的属性a的值

3.2对象的使用

class PersonTest{
    public static void main(String[] args) { //程序运行的内存布局如图
        Person p1 = new Person();
        Person p2 =new Person();
        p1.age = -30;
        p1.shout();
        p2.shout();
    }
}