面向对象之属性与方法
- 三大主线:a.Java类及类的成员——属性,方法,构造器,内部类,代码块
b.面向对象的三大特征——继承,封装,多态,(抽象)
c.其他关键字——static,interface,this,super,fianl,import,abstract,package - 类的内部结构——属性,方法
- 类的属性初始化与array的初始化相似
- 属性(成员变量)与局部变量的异同
相同点:都是变量
不同点:1.在类中声明的位置不同,属性在类的{}中定义,而局部变量在方法体,方法内,构造器内部定义
2.权限修饰符,属性前可以添加权限修饰符:public,protected,缺省,private,而局部变量不能加
3.默认初始化值:属性:类的属性,根据其类型都有默认初始化值,与array初始化相似,而局部变量无默认初始化,也就是说局部变量必须初始化;
4.在内存中加载的位置也不相同,属性加载到堆空间中,局部变量放在栈空间中 - 匿名对象——创建的对象没有显示的赋给一个对象
new Phone().sendEmail();
new Phone().sendEmail();//上下两种调用的不是同一个对象 - 方法——四个部分
1.方法的重载——在一个类中可以存在多个同名的方法,方法之间就是重载关系
2.可变形参的方法
3.方法参数的值传递机制
4.递归方法 - 方法的重载
“两同一不同”——同一个类,同一个方法名,
参数列表不同:参数数量,参数类型
与返回值类型,权限修饰符,形参变量名 - 可变个数的形参——允许定义一个方法一个形参与多个该类形参相匹配,
可变类型的形参方法与本类中方法名相同形参类型相同的方法构成重载,但它与本类方法中的相同形参类型的数组方法不构成重载
public void show(String … s){
}
or
public void show(String[] s){
} - 方法参数的值传递机制
实参——方法调用时,实际传递给形参的数据
基本数据类型,传递数据值
引用数据类型,传递地址值
形参——方法定义时,声明括号内的参数
如此时实参地址中的值基本数据类型,则此时实参赋给形参的是实参真实存储在该地址数据值
如此时实参地址中的值引用数据类型,则此时实参赋给形参的是实参真实地址值 - return不是结束程序,①在方法中结束方法;②在循环中结束循环,这样就能理解递归
- 局部变量——方法中定义的变量(包括方法形参),一定要初始化,都是在栈中生成
成员变量——类中定义的变量,不一定初始化,都是在堆中生成()new出来的结构都是在堆中,包括数组)