(10)面向对象

一、类与对象的概念

对象

  • 现实世界中,随处可见的事物就是对象。比如人、书桌、电脑、瓶子、显示器、主机等。每一个对象又可以划分为两个部分,即 静态部分动态部分
  • 静态部分 :就是不能动的部分,这个部分被称为 “属性” 。任何对象都会具备其自身的属性,如一个人,其属性可以包括: 高矮、胖瘦、性别、年龄 等。
  • 动态部分::就是一个对象会执行哪些动作,也叫做 行为 。比如人的动作可以有: 哭泣、微笑、说话、吃饭、行走、打球等等

  • 类的概念:类就是同一类事物的统称,比如:鸟类就包括所有的鸟对象,即将所有的鸟归为一个鸟类。但是不能将一个事物描述成一类事物,比如一只鸟不能称为鸟类。
  • 类的特点:
    • 同一类的事物他们都会有一些共有的属性和行为。比如人类,不论是男人、女人等,他们都具有相同的属性:姓名、年龄、身高等。也具有相同的行为:吃饭、走路、说话等。
    • 由于一个类有很多对象,每一个对象的属性的值是有差异的:比如,姓名可以不一样、身高有高有矮、体重也有重的有轻的。行为也会有不一样:比如有的人吃饭用左手、走路姿势快慢有差别等等。

类与对象的关系:

  • 对象是具体的事物,将一类具有相似属性和行为的对象抽象为类。即类是抽象的,对象是具体的。比如:你要别人去买电脑,你跟他说:去跟我买台电脑,别人听了之后肯定会疑惑,电脑有那么多牌子,那么多价格,你到底要买哪个?从这个例子可以看出,电脑就是一个类,具体的牌子,配置,价格的一台电脑就是一个对象,它是具体存在的。
  • 先有具体的对象,然后抽象各个对象之间象的部分,归纳出来类,通过类再认识其他对象。
二、 面向对象思想

1,封装:

  • 属性能够描述事物的特征,方法能够描述事物的动作。封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。
    • 具体什么是封装: 封装 也称信息隐藏,也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。
    • 好处:
      1. 实现了专业的分工
      2. 减少耦合(即减少紧密配合与相互影响)
      3. 类内部的结构能够自由修改
      4. 隐藏信息,实现细节

2,继承:

  • 什么是继承:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。就跟父亲与儿子的关系一样,一个父亲可以有多个儿子,一个儿子只能有一个亲生父亲。
    • 好处:
      1. 继承关系是传递的
      2. 继承提高了代码的复用性
      3. 提高了代码的维护性

3,多态:

  • 什么是多态:某一种事物有不同的具体的体现。比如,人类有吃饭的行为,但这个行为到每一个具体的对象后就会有不同的体现,吃饭的优雅程度、快慢、左手还是右等。同一个事物在不同的环境条件下也会有不同的结果。这就是多态。
    • 好处:提高了程序的扩展性。
三、 复合语句
  1. 概念:Java语言的复合语句是整个块区为单位的语句,所以又称块语句或者代码块。复合语句由开括号“{”开始,闭括号“}”结束。
  2. 定义复合语句:定义一个类或者方法时,他们都是以“{}”作为开始和结束的标记。
  3. 复合语句的使用:复合语句的每个语句都是从上到下被执行,以整个块为单位,能够用在任何一个单独语句可以用到的地方,复合语句中也可以嵌套复合语句。
  • 对象的创建、堆与栈、使用和生命周期:
    总结:
    • 对象book被创建出来出来时,内存就为这个对象分配了存储空间。
    • 每个对象都是相互独立的,在内存中占用独立的内存地址。
    • 每个对象都具有自己的生命周期。当一个对象的声明周期结束时,这个对象就会变成垃圾,被Java虚拟机自带的垃圾回收机制处理掉。不能再被使用。

Java中堆与栈的定义:
在这里插入图片描述

  1. 栈(stack):存放一些基本类型的变量和对象的引用变量。
  • 八种基本数据类型(不包括String,因为String是一个类)、创建对象时没有new关键字的左边部分称为对象的引用。
  1. 堆(heap):存放由new创建的对象和数组。
  • 成员变量与局部变量的区别
    1. 定义位置:成员变量定义在类中,而局部变量定义在方法中
    2. 作用范围:成员变量作用于整个类,而局部变量作用于代码块中,且是从该变量声明开始,到该代码块结束。
  • 属性与方法调用总结:
    • 属性:公共属性可以直接调用并赋值。私有的属性必须通过特定的方法来调用。
    • 四种形态的方法如何调用:
      1. 无参数 无返回值:直接调用;
      2. 有参数 无返回值:调用的时候必须传递一个与方法定义的参数类型的值进去,比如定义的money是int类型的数据,调用的时候就必须传递一个int类型的数据;
      3. 无参数 有返回值:直接调用,但是调用完之后必须要用一个与返回值类型相同的数据类型去接收,比如买花返回值类型是String,必须要用String来接收并使用;
      4. 有参数 有返回值:调用的时候必须传递参数值,然后再用与返回值类型相同的数据类型去接收。
  • Java类包
    • 类名冲突:Java中是不允许同一个包中出现两个同名类存在,但是如果想要写两个同名且功能不同的类,则需要放置在不同的包中。
    • 完整的类路径:在使用某个类时,入Scanner,因为这个类是隶属于java.util包中,所以直接编写其全路径也是可以的:java.util.Scanner scan = new Scanner(System.in);
    • 创建包:点击空白处右键–new–package–com…。
    • 导入包:直接导入这个类的包,即在这个类文件的最上头,写入import 类的全路径;即可。(注意:同包下的类互相使用时,不需要导包)
  • 代码排版的快捷键:
    • 方法1:选中要排版的代码行数,按ctrl+i直接格式对其。
    • 方法2:不用选中,直接ctrl+shift+f。

下一章,(11)Java中的访问权限,构造方法和main方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值