面向对象

面向过程

  • 强调的是功能行为

面向对象

  • 面向对象是相对于面向过程而言
  • 面向对象和面向过程都是一种思想
  • 将功能封装进对象,强调了具备了功能的对象

面向对象的特点

  • 是一种符合人们思考习惯的思想
  • 可以将复杂的事情简单化
  • 将程序员从执行者转换成了指挥者
  • 完成需求时:
  • 先要去找具体所需的功能的对象来用
  • 如果该对象不存在,那么创建一个具有所需功能的对象
  • 这样简化开发并提高复用

万物皆对象

对象的特征---属性

对象的行为---方法

测试类:

  • 使用定义的Student类中的变量和方法
  • 先找到这个类,使用这个类:通过类名创建对象;

创建对象格式:

  • 类名 变量名 = new 类名();
  • 类名 对象名 = new 类名();

使用对象:

  • 用对象调用成员变量,成员方法
  • 调用/使用成员变量--变量名.成员变量名称;
  • 调用/使用成员方法--变量名.成员方法名;

跨类使用成员变量和成员方法需要创建对象,用对象调用。

一个对象的内存图:

  1. Car car在栈中(car是局部变量,随着main方法执行而进栈)
  2. new关键字开辟的所有空间都在堆中

​ Car类里面的color,num成员变量随着对象创建在堆中

  1. 成员变量有默认值,局部变量没有默认值
  2. car称为对象,实际变量存的是地址值
  3. 方法执行时进栈,执行完毕后会弹栈从内存中消失,该方法中的局部变量会消失
  4. 类被使用时,该类的.class文件会进内存中的方法区
  5. 创建对象是根据.class文件的内容在堆中开辟空间

局部变量名称可以和成员变量名称一样,在方法使用就近原则。

​ 局部变量和成员变量名称一样,默认就近原则,使用this.访问成员变量。

变量在它声明的括号内有效

成员方法用对象调用

super注意点:

  1. super调用父类的构造方法,必须在构造方法的第一个
  2. super必须只能出现在子类的方法或构造方法中
  3. super和this不能同时调用构造方法

Vs this:

​ 代表的对象不同 this:本身调用这个对象 super:代表父类对象的应用

​ 前提: this:没有继承也可以使用 super:只能在继承条件下才可以使用

​ 构造方法 this();本类的构造 super:父类的构造

重写:需要有继承关系,子类重写了父类的方法!

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 修饰符:范围可以扩大但是不能缩小:public>protected>default>private
  4. 抛出的异常:范围,可以被缩小,但是不能扩大。ClassNotFoundException-->Exception(大)

重写,子类和父类必须要一致:方法体不同!

为什么要重写:

  1. 父类的功能:子类不一定需要,或者不一定满足!alt+insert: override;

多态注意事项:

  1. 多态是方法的多态,属性没有多态
  2. 父类和子类有联系,
  3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象! Father f1 = new son();
    1. static 方法,属于类,他不属于实例;
    2. final 常量;
    3. private 方法;
posted @ 2022-03-07 20:29  ice204  阅读(41)  评论(0)    收藏  举报