目录
(不断更新)
成员变量
声明成员变量的语法如下
[public|protected|private] [static] [final] <type><variable_name>
- public、protected、private:用于表示成员变量的访问权限。
- static:表示该成员变量为类变量,也称为静态变量。
- final:表示将该成员变量声明为常量,其值无法更改。
- type:表示变量的类型。
- variable_name:表示变量名称。
成员变量和局部变量的区别:
1. 在类中的位置不同
成员变量 类中方法外
局部变量 方法内或者方法声明上
2. 在内存中的位置不同
成员变量 堆内存
局部变量 栈内存
3. 生命周期不同
成员变量 随着对象的存在而存在,随着对象的消失而消失
局部变量 随着方法的调用而存在,随着方法的调用完毕而消失
4. 初始化值不同
成员变量 有默认的初始化值
局部变量 没有默认的初始化值,必须先定义,赋值,才能使用
静态变量(static)和成员变量的区别:
1. 所属不同
静态变量属于类,所以也称为为类变量
成员变量属于对象,所以也称为实例变量(对象变量)
2. 内存中位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
3. 内存出现时间不同
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失
4. 调用不同
静态变量可以通过类名调用,也可以通过对象调用
成员变量只能通过对象名调用
this 关键字
this:代表所在类的对象引用(方法被哪个对象调用,this就代表那个对象)
1.this访问该类的另一个方法或属性
public class Baby{
public void wakeUp(){
System.out.println("宝宝醒啦");
}
public void eat(){
// 使用this访问wakeup方法
this.wakeUp();
System.out.println("吃东西");
}
}
2. this调用本类中的其他构造方法,调用时要放在构造方法的首行
3.. 当需要返回当前对象的引用时,就常常在方法写return this。
Java中this关键字使用小结 - zheting - 博客园
static关键字
可以修饰成员变量和成员方法
1. 随着类的加载而加载
2. 优先于对象存在
3. 被类的所有对象共享
4. 可以通过类名调用
static关键字注意事项:
在静态方法中是没有this关键字的
静态方法只能访问静态的成员变量和静态的成员方法
final关键字
可以修饰类,修饰成员变量,修饰成员方法
特点:
A:修饰类 类不能被继承
B:修饰成员变量 变量变成了常量
C:修饰成员方法 方法不能被重写
D:final的初始化时机
a:在定义时就赋值
b:在构造方法完毕前赋值
abstract 关键字
可以修饰类和方法,抽象类不一定有抽象方法,抽象方法的类一定是抽象类
抽象类不能实例化: 如何实例化?具体的子类实例化
接口类
1. 接口用关键字interface表示 格式:interface 接口名 {}
2. 类实现接口用implements表示 格式:class 类名 implements 接口名 {}
3. 成员特点:
成员变量只能是常量,默认修饰符 public static final
没有构造方法,因为接口主要是扩展功能的,而没有具体存在
成员方法只能是抽象方法,默认修饰符 public abstract
4. 接口不能实例化,接口的子类要么是抽象类,要么重写接口中的所有抽象方法
抽象类与接口的区别
1. 成员区别
抽象类 变量,常量;有抽象方法;抽象方法,非抽象方法
接口 常量;抽象方法
2. 关系区别
类与类 继承,单继承
类与接口 实现,单实现,多实现
接口与接口 继承,单继承,多继承
3. 设计理念区别
抽象类 被继承体现的是:”is a”的关系。共性功能
接口 被实现体现的是:”like a”的关系。扩展功能
继承
(1)把多个类中相同的属性和行为提取出来,定义到一个类中,然后让这多个类和这一个类产生一个关系,这多个类就具备这一个类的属性和行为了。这种关系叫:继承。
(2)继承如何表示的呢?
格式:class 子类名 extends 父类名 {}
(3)java中的继承特点:
A:java中只能单继承
B:java中可以多层继承。(继承体系)
(4)java中的继承的好处和弊端
A:好处
a:提高了代码的复用性
b:提高了代码的可维护性
c:让类与类之间产生了一个关系,是多态的前提
B:弊端
让类与类的耦合增强了。这样一个类的改动会直接影响另一个类。
设计原则:高内聚,低耦合。
(5)java中的继承的注意事项:
A:私有成员不能被继承
B:构造方法不能被继承,想访问,通过super关键字
C:不能为了部分功能而去使用继承
(6)继承中的成员关系:
A:成员变量
不同名:特别简单,一看就知道用的是谁。同名:就近原则
访问自己的用this,访问父亲的用super
B:构造方法
a:子类的所有构造方法默认都是访问父类的无参构造方法
b:如果父类没有无参构造方法,怎么办呢?
通过super(...)访问父类带参构造方法
通过this(...)访问本类其他构造方法。(一定要有一个访问了父类的构造方法)
注意:super或者this只能出现一个,并且只能在语句的第一条语句。
为什么?因为子类可能会访问父类的数据,所以,子类初始化之前,要把父类数据初始化完毕。
C:成员方法
就近原则
(7)this和super的区别及应用场景
A:区别
this:本类对象的引用
super:父类存储空间的标识。可以理解为父类对象的引用。
B:应用场景
a:成员变量
this.变量 本类的成员变量
super.变量 父类的成员变量
b:构造方法
this(...) 本类的构造方法
super(...) 父类的构造方法
c:成员方法
this.方法名(...) 本类的成员方法
super.方法名(...) 父类的成员方法