一、面向对象思想的落地法则一:
1.设计类,并设计类的成员(成员变量&成员方法)
2.通过类,来创建类的对象(也称作了类的实例化)
3.通过“对象.属性”或“对象.方法”来调用,完成相应的功能
二、创建的多个对象,各自拥有一套类的属性。当对其中一个对象的属性进行修改时,不会影响到其他对象的属性值。
三、类的属性(成员变量)
成员变量 vs 局部变量
相同点:1.遵循变量声明的格式:数据类型 变量名 = 初始化值
2.都有作用域
不同点:1.声明的位置不同:成员变量:声明在类里,方法外
局部变量:声明在方法内,方法的形参部分,代码块内
2.成员变量的修饰符有四个:public private protected 缺省
局部变量没有修饰符,与所在的方法修饰符相同。
3.初始化值:一定会有初始化值。
成员变量:如果在声明的时候,不显示的赋值,那么不同数据类型会有不同的默认初始化值
byte short int long ==>0
float double ==>0.0
char ==>空格
boolean ==>false
引用类型变量 ==>null
局部变量:一定要显示的赋值。(局部变量没有默认的初始化值)
4.二者在内存中存放的位置不同:成员变量存在于堆空间中;局部变量:栈空间中
总结:关于变量的分类:1)按照数据类型的不同:基本数据类型(8种) & 引用数据类型
2)按照声明的位置不同:成员变量 & 局部变量
四、类的方法:提供某种功能的实现
1.实例: public void eat(){//方法体}
public String getName(){}
public void setName(String n){}
格式:权限修饰符 返回值类型(void:无返回值/具体的返回值) 方法名(形参){}
2.关于返回值类型 void :表明此方法不需要返回值
有返回值的方法:在方法的最后一定有return + 返回值类型对应的变量
记忆:void 与 return 不可以同时出现在一个方法内。像一对”冤家“。
3.方法内可以调用本类的其他方法或属性,但是不能在方法内再定义方法!
五、方法的重载(overload)
要求:1.同一个类中 2.方法名必须相同 3.方法的参数列表不同(1.参数的个数不同 2. 参数类型不同)
六、可变个数形参的方法
1.格式:对于方法的形参:数据类型 … 形参名
2.可变个数的形参的方法与同名的方法之间构成重载
3.可变个数的形参再调用时,个数从0开始,到无穷多个都可以
4.使用可变多个形参的方法与方法的形参使用数组是一致的
5.若方法中存在可变个数的形参,那么一定要声明在方法形参的最后
6.在一个方法中,最多声明一个可变个数的形参
七、方法的参数传递(重难点)
1.形参:方法声明时,方法小括号内的参数
实参:调用方法时,实际传入的参数的值
2.规则:Java中的参数传递机制:值传递机制
1)形参时基本数据类型的:将实参的值传递给实参的基本数据类型的变量
2)形参时引用数据类型的:将实参的引用类型变量的值 (对应的堆空间的对象实体的首地址值)传递给形参的引用类型变量
八、面向对象的特征一:封装与隐藏
问题:当创建了类的对象以后,如果直接通过“对象.属性”的方式对相应的对象属性赋值的话,可能会出现不满足实际情况的意外,我们考虑不让对象来直接作用属性,而是通过“对象.方法”的形式,来控制对象对属性的访问。实际情况中,对属性的要求就可以通过方法来体现
解决的方法:(封装性的思想)1.将类的属性私有化 2.提供公共的方法(setter & getter)来实现调用。
九、权限修饰符:可以用来修饰属性,方法
private修饰的属性,只能在本类中被调用,出了此类,就不能被调用了。
十、类的第三个成员:构造器(constructor 构造方法)
构造器的作用:1.创建对象 2.给创建的对象的属性赋值
1.设计类时,若不显示声明类的构造器的话,程序会默认提供一个空参的构造器
2.一旦显示的定义类的构造器,那么默认的构造器就不再提供
3.如何声明类的构造器。格式:权限修饰符 类名(形参){ }
4.类的多个构造器之间构成重载
十一、类对象的属性赋值的先后顺序:①属性的默认初始化 ②属性的显示初始化 3.通过构造器给属性初始化
④通过"对象.方法"的方式给属性赋值
十二、this关键字
1.可以用来修饰属性,方法,构造器
2.this理解为 当前对象或当前正在创建的对象;比如:this.name , this.show() ;
3.当形参与成员变量重名时,如果在方法内部需要使用成员变量,必须添加this来表明该变量时类成员
4.在任意方法内,如果使用当前类的成员变量或成员方法可以在其面前添加this,增强程序的阅读性
5.可以在构造器中通过“this(形参)”的方式显示的调用本类中其他重载的指定构造器
要求:1.在构造器内部必须声明在首行
2.若一个类中有n个构造器,那么最多有n-1个构造器中使用了this();
十三、
package:声明源文件所在的包,写在程序的第一行
每“.”一次,表示一层文件目录。 包名都要小写
import:
1.显示的导入指定包下的类或接口
2.写在包的声明和源文件之间
3.如果需要引入多个类或接口,那么就并列写出
4.如果导入的类是java.lang包下的,如:System,String,Math等,就不需要显示的声明
5. 理解 .*的概念。比如java.util.*;
6. 如何处理同名类的导入,如:在util包和sql包下同时存在Date类
7.import static 表示导入指定类的static的属性或方法
8.导入java.lang.* 只能导入lang包下的所有类或接口,不能导入lang的子包下的类或接口