static关键字:
特点:
static随着类的加载而加载
优先于对象存在
被类的所有对象共享
可以通过类名调用也可根据对象调用,推荐使用类调用。
注意事项:
在静态方法中没有this关键。
静态方法只能访问静态的成员变量和静态的成员方法。
静态方法:
成员变量:只能访问静态变量。
成员方法:只能访问静态成员方法。
非静态方法:
成员变量:可以是静态的,也可以是非静态的
成员方法:可以是非静态的成员方法,也可以非静态的成员方法。
静态变量和成员变量的区别:
静态变量属于类,所以称为类变量
成员变量属于对象,所以称为实例变量(对象变量)
内存中的位置不同
静态变量存储于方法区的静态区
成员变量存储于堆内存
内存出现的时间不一样
静态变量随着类的加载而加载,随着类的消失而消失
成员变量随着对象的创建而存在,随着对象的消失而消失。
调用不同
静态变量可以通过类名调用,也可通过对象调用。
成员变量只能通过对象名调用。
代码块:
局部代码块
在java中,使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块
局部代码块
在方法中出现,限定变量的生命周期,及早释放,提高内存利用率。
构造代码块
在类中方法外出现 ,多个构造方法方法中相同的代码存放到一起,每次调用构造器都执行,并且在构造方法前执行。
静态代码块 在类中方法外出现,加static修饰
在类中方法外出现,加了static修饰,用于给类经行初始化,在加载的时候就执行,并且只执行一次。
继承:
继承概述
多个类中存在相同的属性和行为时,将这些内容抽取到单独的一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。
通过extends关键字可以实现实现类与类的继承
class 子类名 extends 父类名 {}
单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。
有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员。
public class StudentDemo3 {
public void eat(){
System.out.println("吃了吗?");
System.out.println("睡了吗?");
}
}
public class StudentDemo4 extends StudentDemo3 {
}
public class StudentTest3 {
public static void main (String [] args){
StudentDemo4 studentDemo4 = new StudentDemo4();
studentDemo4.eat();
}
}
好处:
提高了代码的复用性
提高了代码的维护性
让类与类之间产生了关系,是多态的前提。
类与类产生了关系,也是继承的一个弊端:
类的耦合性增强了。
开发的原则,低耦合,高内聚。
耦合:类与类的关系
内聚:就是自己完成某件事情的能力。