首页 > 编程语言 >JavaSE-Day02-面向对象编程

JavaSE-Day02-面向对象编程

时间:2022-08-27 14:35:16浏览次数:65  
标签:调用 对象 Day02 构造 面向对象编程 子类 new JavaSE 父类

面向对象编程

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. 抛出的异常范围可以被缩小但不能扩大
  • 重写都是方法的重写,和属性无关
  • 父类的引用指向子类
  • 静态方法的调用只和定义的数据类型有关
    非静态可以重写

多态

标签:调用,对象,Day02,构造,面向对象编程,子类,new,JavaSE,父类
From: https://www.cnblogs.com/isdsy/p/16630507.html

相关文章

  • JavaSE-Day02-Java方法
    Java方法什么是方法System.out.println() 类.对象.方法()Java方法是语句的集合,他们在一起执行一个功能方法是解决一类问题的步骤的有序集合方法包含于类或对象之中......
  • Day02
    打开CMD的方式开始+系统+命令提示符win键+R+输入cmd打开控制台(推荐使用)在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口资源管理器的地址栏......
  • JavaSE-Day01-Java流程控制
    Java流程控制用户交互Scanner通过Scanner类的next()和nextLine()方法来获取用户输入读取前可以使用hasNext()和hasNextLine()来判断是否还有输入的值next:不能得到带......
  • JavaSE-Day01-Java基础语法
    Java基础语法注释、标识符、关键字数据类型类型转换变量、常量运算符包机制包的本质就是文件夹一般利用公司域名倒置作为包名eg:www.baidu.com-->com.baidu.www......
  • JavaSE-Day01-Java入门
    Java入门计算机语言发展史机器语言——二进制汇编语言——指令代替二进制高级语言——面向对象、面向过程Java特性和优势简单面向对象可移植——虚拟机高性能......
  • 微信小程序day02-
    一、template模板1.定义模板(其他wxml文件中) <templatename="模板名"></template>2.使用模板(当前wxml文件中) <templateis="模板名"></template>3.传递参数(......
  • Jo医通_DAY02
    一、全局异常处理SpringBoot默认情况下会映射到/error进行异常处理,但是提示并不十分友好,下面自定义异常处理,提供友好展示。   二、自定义异常 三、日志......
  • 小试牛刀day02
    练习day02一,使用1.scanner键盘录入2.whinle循环3.方法4.if判断5.运算符二.技术实现1.键盘录入2.判断录入结果3.进入对应的方法执行4.计算公式儿子的......
  • 第十五章 面向对象编程OPP随笔
    面向对象编程的三个核心为数据抽象、继承和动态绑定。继承:派生类需要通过派生列表指明它从哪个或哪几个基类继承过来,这样,派生类将继承基类的所有成员(多继承将继承多个基......
  • node-day02
    一、加载静态资源(所有静态资源必须要在服务器响应才能看到)1.什么是静态资源例如htmlcssjs图片2.如何加载?​需要引入文件系统模块fs,使用fs中的readFile方......