1、static关键字
1.1、static可以修饰成员变量,成员方法,还有类(其中这里的类是内部类)
1.2、static修饰的部分会随着类的加载而加载:
加载过程:当JVM执行static修饰的代码时,会在内存的共享区给static部分开辟一个空间,供该类持有,static部分不是某个对象的部分,而是该类共有的,所以当一个函数会被多个对象调用时,最好定义成static,这样比较节省空间。
1.3、静态方法只能访问静态成员
原因:如果静态方法中调用了非静态的变量,那么由于静态方法是随着类的加载而加载,在执行到非静态变量时,此时JVM找不到该变量,所以静态方法只能访问静态成员
静态方法一般都是用匿名对象来调用,这样可以节省空间,因为在JVM执行运行代码时就不会在栈中开辟一个空间来实例化对象了
2、访问修饰符
2.1、访问修饰符有private、default、protected、public,其中访问权限以此增加
修饰符 类内部 同一个包 子类 任何地方
private YES NO NO NO
default YES YES NO NO
protected YES YES YES NO
public YES YES YES YES
3、继承
3.1、特点:
(1)提高了代码的复用性。
(2)让类与类之间产生关系,有了这个继承关系才有了多态的特性
(3)Java中只支持单继承,接口支持多继承
3.2、继承是通过extends关键字来实现,并且继承支持多层继承,例如:
class Grandfather{
...
}
class Father extends Grandfather{
...
}
class Son extends Father{
...
}
3.3、继承只支持单继承,不支持多继承,不然的话,比如run方法,继承了多个,不知道到底调用哪一个。
3.4、方法的覆盖
具有继承关系的父、子类不存在变量之间的覆盖,只有方法的覆盖也就是:
class Father{
public void show(){
System.out.println("father");
}
}
class Son extends Father{
public void show(){
System.out.println("son");
}
}