第三章 面向对象(一)
1.(了解)面向对象和面向过程
2.面向对象的编程关注于类的设计
1)一个项目或者工程,不管多么庞大,一定是由一个一个的类构成
2)类是抽象的,好比是制造汽车的图纸,车是由图纸制造的,其实就是类的实例化
3完成一个项目(功能)的思路
1)所需要完成的功能对应的类的对象是否存在
2)若存在,则通过对象直接调用对应的类中的属性或者方法即可
3)若不存在,则要创建类的对象,甚至说类都不存在,就需要设计类
4.面向对象编程的三条主线:
1)类及类的构成成分:属性 方法 构造器 代码块 内部类
2)面向对象编程的特征:封装性 继承性 多态性(抽象性)
3)其他的关键字:this super package import static final abstract interface
类及对象
1.关注于类的设计
2.类的组成成分:
1)属性(成员变量 Field)
2)方法(成员方法 函数 Method)
2.1属性:
成员变量 vs 局部变量
相同点:1.遵循变量生命的格式:数据类型 变量名 = 初始化值
2.都有作用域
不同点:1.声明的位置不同:成员变量:声明在类里,方法外
局部变量:声明在方法内,方法的形参部分,代码块内
2.成员变量的修饰符有四个:public private protected 缺省
局部变量没有修饰符,与所在的方法修饰符相同
3.初始化值:一定会有初始化值。
成员变量:如果在声明的时候,不显式的赋值,那么不同数据类型会有不同的默认初始化值
byte short int lang====>0
float double====>0.0
char====>空格
boolean====>false
引用类型变量====>null
局部变量:一定要显式的赋值(无默认初始化值)
4.在内中存放的位置不同:成员:堆空间 局部:栈空间
总结:关于变量的分类:1按照数据类型不同:基本数据类型(8种)&引用数据类型
2.按照声明的位置不同:成员变量&局部变量
2.2方法:提供某种功能的实现
1)格式:权限修饰符 返回值类型(void:无返回值/具体返回值)方法名(形参){}
方法成员的基本声明与定义方式:
存取修饰 返回值类型 方法名(参数行){
//实例
return 返回值;
}
2)关于返回值类型:void:表明此方法不需要返回值
有返回值的方法:在方法的最后一定有return+返回值类型对应的变量
特点:void和return不能出现在同一个方法内
3)方法内可以调用本类中其他方法或属性,但不能在方法中再定义方法
3.面向对象编程思想的落地法则一:
1)设计并创建类及类的成分
2)实例化类的对象
3)通过“对象.属性”或“对象.方法”的形式完成某项功能
4.类的初始化的内存解析
4.1内存划分的结构:
栈(stack):局部变量、对象的引用名、数组的引用名
堆(heap):new出来的“东西”(如:对象、数组的实体),含成员变量
方法区:包含字符串常量
静态域:声明为static的变量
4.2 理解的基础上,学会基本的创建的类的对象在内存中的运行
方法的重载
方法的重载(overload):
要求:1.在同一个类中 2.方法名必须相同 3.方法的参数列表不同(①参数的个数不同②参数类型不同)
补充:方法的重载与方法的返回值类型没有关系
注意方法有无返回值
可变个数的形参的方法
1.格式:对于方法的形参:数据类型...形参名
2.可变个数的形参的方法与同名的方法之间构成重载
3.可变个数的形参在调用时,个数从0开始,到无穷多个都可以
4.使用可变多个形参的方法与方法的形参使用数组是一致的
5.若方法中存在可变个数的形参,那么一定要声明在方法形参的最后
6.在一个方法中,最多声明一个可变个数的形参
java的值传递机制
方法的参数传递
1.形参:方法声明时,方法小括号内的参数
实参:调用方法时,实际传入的参数的值
2.规则:java中的参数传递机制:值传递机制
1)形参是基本数据类型的:将实参的值传递给形参的基本数据类型的变量
2)形参是引用数据类型的:将实参的应用类型变量的值(对应的堆空间的对象实体的首地址值)传递给形参的引用数据类型的变量
面向对象的特征一:封装性
1.面向对象的特征一:封装与隐藏
问题:当创建的类的对象以后,如果直接通过“对象.属性”的方式对相应的对象属性赋值的话,可能会出现不满足实际情况的意外,我们考虑不让对象来直接作用属性,
而是通过“对象.方法”的形式,来控制对象对属性的访问,实际情况中,对属性的要求就可以通过方法来体现
2面向对象思想的落地法则二:(封装性思想)①将类的属性私有化 ②提供公共的方法(setter&getter)来实现调用
3.权限修饰符:public private 缺省 protected
可用来修饰属性、方法、构造器
注:1)权限从大到小排列:public protected 缺省 private
2)修饰类的权限修饰符有:public 缺省
构造器
一.
类的第三个成员:构造器(constructor 构造方法)
作用:①创建对象 ②给创建的对象的属性赋值
1.设计类时,若不显式声明类的构造器的话,程序会默认提供一个空参的构造器
2.一旦显式的定义类的构造器,那么默认的构造器就不再提供
3.如何声明类的构造器:格式:权限修饰符 类名(形参){ }
4.类的多个构造器之间构成重载
构造器无返回值
二.
类对象的属性赋值的先后顺序:
①属性的默认初始化②属性的显式初始化③通过构造器给属性初始化④通过“对象.方法”的方式给属性赋值⑤通过代码块赋值
this关键字
this:
1.使用在类中,可用来修饰属性、方法、构造器
2.表示当前对象或者当前正在创建的对象
3.当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量是类成员
4.在任意方法内,如果使用当前类的成员变量或成员方法可以在其面前添加this,增强程序的阅读性
5.在任意构造器中使用“this(形参列表)”显式的调用本类中重载的其他的构造器
5.1要求“this(形参列表)”要声明在构造器的首行
5.2类中若存在n个构造器,那么最多有n-1个构造器中使用了this
package import
package:
1.声明源文件所在的包,写在程序的第一行
2.每“.”一次,表明一层文件目录
3.包名都要小写
import:
1.显式导入指定包下的类或接口
2.写在包的声明和源文件之间
3.如果需要引入多个类或接口,那么久并列写出
4.如果导入的类是java.lang包下的,就不需要显式的声明
5.理解“.*”的概念。比如java.util.*;
6.如何处理同名类的导入。
7.import static 表示导入指定类的static的属性或者方法
8.导入java.lang.*只能导入lang包下的所有类或接口,不能导入lang的子包下的类或接口