一、类与对象的概念
对象
- 现实世界中,随处可见的事物就是对象。比如人、书桌、电脑、瓶子、显示器、主机等。每一个对象又可以划分为两个部分,即 静态部分 与 动态部分 。
- 静态部分 :就是不能动的部分,这个部分被称为 “属性” 。任何对象都会具备其自身的属性,如一个人,其属性可以包括: 高矮、胖瘦、性别、年龄 等。
- 动态部分::就是一个对象会执行哪些动作,也叫做 行为 。比如人的动作可以有: 哭泣、微笑、说话、吃饭、行走、打球等等 。
类
- 类的概念:类就是同一类事物的统称,比如:鸟类就包括所有的鸟对象,即将所有的鸟归为一个鸟类。但是不能将一个事物描述成一类事物,比如一只鸟不能称为鸟类。
- 类的特点:
- 同一类的事物他们都会有一些共有的属性和行为。比如人类,不论是男人、女人等,他们都具有相同的属性:姓名、年龄、身高等。也具有相同的行为:吃饭、走路、说话等。
- 由于一个类有很多对象,每一个对象的属性的值是有差异的:比如,姓名可以不一样、身高有高有矮、体重也有重的有轻的。行为也会有不一样:比如有的人吃饭用左手、走路姿势快慢有差别等等。
类与对象的关系:
- 对象是具体的事物,将一类具有相似属性和行为的对象抽象为类。即类是抽象的,对象是具体的。比如:你要别人去买电脑,你跟他说:去跟我买台电脑,别人听了之后肯定会疑惑,电脑有那么多牌子,那么多价格,你到底要买哪个?从这个例子可以看出,电脑就是一个类,具体的牌子,配置,价格的一台电脑就是一个对象,它是具体存在的。
- 先有具体的对象,然后抽象各个对象之间象的部分,归纳出来类,通过类再认识其他对象。
二、 面向对象思想
1,封装:
- 属性能够描述事物的特征,方法能够描述事物的动作。封装就是把同一类事物的共性(包括属性和方法)归到同一类中,方便使用。
- 具体什么是封装: 封装 也称信息隐藏,也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。
- 好处:
- 实现了专业的分工
- 减少耦合(即减少紧密配合与相互影响)
- 类内部的结构能够自由修改
- 隐藏信息,实现细节
2,继承:
- 什么是继承:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。就跟父亲与儿子的关系一样,一个父亲可以有多个儿子,一个儿子只能有一个亲生父亲。
- 好处:
- 继承关系是传递的。
- 继承提高了代码的复用性。
- 提高了代码的维护性。
- 好处:
3,多态:
- 什么是多态:某一种事物有不同的具体的体现。比如,人类有吃饭的行为,但这个行为到每一个具体的对象后就会有不同的体现,吃饭的优雅程度、快慢、左手还是右等。同一个事物在不同的环境条件下也会有不同的结果。这就是多态。
- 好处:提高了程序的扩展性。
三、 复合语句
- 概念:Java语言的复合语句是整个块区为单位的语句,所以又称块语句或者代码块。复合语句由开括号“{”开始,闭括号“}”结束。
- 定义复合语句:定义一个类或者方法时,他们都是以“{}”作为开始和结束的标记。
- 复合语句的使用:复合语句的每个语句都是从上到下被执行,以整个块为单位,能够用在任何一个单独语句可以用到的地方,复合语句中也可以嵌套复合语句。
- 对象的创建、堆与栈、使用和生命周期:
总结:- 对象book被创建出来出来时,内存就为这个对象分配了存储空间。
- 每个对象都是相互独立的,在内存中占用独立的内存地址。
- 每个对象都具有自己的生命周期。当一个对象的声明周期结束时,这个对象就会变成垃圾,被Java虚拟机自带的垃圾回收机制处理掉。不能再被使用。
Java中堆与栈的定义:
- 栈(stack):存放一些基本类型的变量和对象的引用变量。
- 八种基本数据类型(不包括String,因为String是一个类)、创建对象时没有new关键字的左边部分称为对象的引用。
- 堆(heap):存放由new创建的对象和数组。
- 成员变量与局部变量的区别
- 定义位置:成员变量定义在类中,而局部变量定义在方法中
- 作用范围:成员变量作用于整个类,而局部变量作用于代码块中,且是从该变量声明开始,到该代码块结束。
- 属性与方法调用总结:
- 属性:公共属性可以直接调用并赋值。私有的属性必须通过特定的方法来调用。
- 四种形态的方法如何调用:
- 无参数 无返回值:直接调用;
- 有参数 无返回值:调用的时候必须传递一个与方法定义的参数类型的值进去,比如定义的money是int类型的数据,调用的时候就必须传递一个int类型的数据;
- 无参数 有返回值:直接调用,但是调用完之后必须要用一个与返回值类型相同的数据类型去接收,比如买花返回值类型是String,必须要用String来接收并使用;
- 有参数 有返回值:调用的时候必须传递参数值,然后再用与返回值类型相同的数据类型去接收。
- Java类包
- 类名冲突:Java中是不允许同一个包中出现两个同名类存在,但是如果想要写两个同名且功能不同的类,则需要放置在不同的包中。
- 完整的类路径:在使用某个类时,入Scanner,因为这个类是隶属于java.util包中,所以直接编写其全路径也是可以的:java.util.Scanner scan = new Scanner(System.in);
- 创建包:点击空白处右键–new–package–com…。
- 导入包:直接导入这个类的包,即在这个类文件的最上头,写入import 类的全路径;即可。(注意:同包下的类互相使用时,不需要导包)
- 代码排版的快捷键:
- 方法1:选中要排版的代码行数,按ctrl+i直接格式对其。
- 方法2:不用选中,直接ctrl+shift+f。