JavaSE-Day02-面向对象编程


面向对象编程

OOP

面向对象和面向过程

对于描述复杂的事务,从宏观上需要面向对象的思路,具体到微观,仍然需要面向过程的思路

  • 面向过程——第一步做什么,第二部做什么……
  • 面向对象——分类的思维模式

类和对象的关系

  • 类——是一种抽象的数据类型,它是对某一类事物的整体描述或定义,不能代表某一个具体的事物
  • 对象——是抽象概念的具体实例,能够体现出特点、展现出功能的是具体的实例,而不是抽象的概念
  • 使用new()关键字创建对象
    使用new关键字创建的时候,除了分配内存空间外,还会给创建好的对象进行默认的初始化,以及对类中构造器的调用

类与对象小结

  1. 类是一个模板(抽象的),对象是一个具体的实例
  2. 对象的引用
    对象是通过引用来操作的(栈—>堆:引用就是指向对象的一个地址)
  3. 对象的创建和使用
    • 必须使用new关键字创建对象
    • 调用对象的属性和方法通过点“.”
    • 静态的属性(属性)
    • 动态的方法(方法)

构造器详解

  • 什么是构造器?
    构造器通常也叫构造方法、构造函数,是在创建对象时必须调用的
    当你new一个对象时,就会调用构造器。构造器格式如下:
    [修饰符,比如public] 类名 (参数列表,可以没有参数){ //这里不能有return}

  • 构造器的特点
    一个类即使什么都不写,也会存在一个方法

    1. 必须和类的名字相同
    2. 必须没有返回类型,也不能写void
  • 构造器的作用

    1. 使用new关键字,必须要有构造器(new本质在调用构造器)
    2. 用来初始化值(给实例化的对象赋一个初始值)
  • 注意事项
    一旦定义了有参构造,无参构造就必须显示定义(写出来)

创建对象内存分析

  • 方法区:类和方法和常量池
    • 静态方法区:static 和类一起加载(所有对象想调用它都可以从堆里直接调)
  • 栈:存放调用的方法和引用变量名(new出来的对象)
  • 堆:引用变量名指向(相当于内容)

封装

属性私有,get/set

  • 高内聚——类的内部数据操作细节自己完成,不允许外部干涉
  • 低耦合——尽暴露少量的方法给外部使用
  • 数据的隐藏——通常应禁止直接访问一个对象中数据的实际表示,而应该通过操作接口来访问

继承

  • 继承的本质是堆某一批类的抽象,从而实现对现实世界更好的建模(对类再抽象)
  • extends(意思是扩展),子类是父类的扩展
  • Java中只有单继承,没有多继承
  • 继承是类和类之间的一种关系。类和类之间的关系还有依赖、组合、聚合等
  • 子类(派生类)继承父类(基类),使用关键字extends来表示
  • 子类和父类的关系可看作“子类 is a 父类”(eg:学生是一个人)
  • 子类继承父类,就会拥有父类的全部方法
  • 在Java中,所有的类都默认直接或间接继承Object

Super详解

  • super是调用父类的构造方法,必须在构造方法的第一个
  • 只能出现在子类的方法或者构造方法中
  • super和this不能同时调用构造方法
    • this:调用者自身这个对象,没有继承也可以使用,调用本类的构造
    • super:代表父类对象的应用,只有在继承条件下才可以使用,调用父类的构造

方法重写

  1. 方法名必须相同
  2. 参数列表必须相同
  3. 修饰符范围可以扩大,但不能缩小
  4. 抛出的异常范围可以被缩小但不能扩大
  • 重写都是方法的重写,和属性无关
  • 父类的引用指向子类
  • 静态方法的调用只和定义的数据类型有关
    非静态可以重写

多态

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/282512.html

(0)
上一篇 2022年8月27日
下一篇 2022年8月27日

相关推荐

发表回复

登录后才能评论