局部变量和成员变量
- 定义的位置不同
定义在类中的变量是成员变量
定义在方法中或者{}语句里面的变量是局部变量 - 在内存中的位置不同
成员变量存储在对内存的对象中
局部变量存储在栈内存的方法中 - 声明周期不同
成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失
局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失 - 初始化不同
成员变量因为在堆内存中,所有默认的初始化值
局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。
基本类型和引用类型
- 基本类型作为参数传递时,本质上是将基本类型参数复制一份传递给调用方法,当调用方法执行完,弹栈结束,程序回到主方法main,基本类型参数保持不变;
- 引用类型作为参数传递时,本质上是将内存地址传递给调用方法,最终导致主方法和调用方法无论哪一个改变了引用值,都将改变引用类型参数;
面向对象特征
封装
封装的表现
- 方法是一种基本的封装;
- 类也是一种封装;
封装的优势
1. 提高代码的复用性;
2. 提高代码的安全性;
3. 隐藏实现细节,但是需要提供可以访问的方式;
注意:
1. 定义类中的属性时,应当将属性私有化,用private修饰;
2. 被private修饰的变量,类外无法使用,可提供公共访问方式(方法),让外类修改和获取(get,set);
this关键字
当方法中局部变量和成员变量之间有重复时候,在方法中调用成员变量需要在变量名前加上关键字 this.
注意:
1. this代表对象,哪个对象调用了this所在的方法,this就代表哪个对象;
继承
继承的格式
class 子类 extends 父类 {}
继承的注意事项
-
在Java中,类只支持单继承,不允许多继承,也就是说一个类只能有一个直接父类,例如下面这种情况是不合法的;
-
多个类可以继承一个父类,例如下面这种情况是允许的;
-
在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类,例如C类继承自B类,而B类又可以去继承A类,这时,C类也可称作A类的子类。下面这种情况是允许的。
class A{}
class B extends A{}
class C extends B{}
- 在Java中,子类和父类是一种相对概念,也就是说一个类是某个类父类的同时,也可以是另一个类的子类。
成员变量和方法的注意事项
- 父类中的成员变量是非私有的,子类中可以直接访问,若父类中的成员变量私有了,子类是不能直接访问的。
- 当子父类中出现了同名成员变量时,在子类中若要访问父类中的成员变量,必须使用关键字super来完成。
个人学习记录,难免错误,望大神指正。