变量
成员变量
类变量
实例变量
局部变量
实例==对象
类变量与实例变量
类变量就是静态成员变量
位置:类中方法外
内存区域:方法区
生命周期:随类加载而加载
特点:无论创建多少对象,类变量仅在方法区中存在一份
实例变量非静态成员变量
位置:类中方法外
内存区域:堆内存
生命周期:随对象创建而加载
特点:每创建一个对象就存在一个实例变量
继承:在程序中,继承是在描述类与类之间的所属关系
多个类公有的成员变量和成员方法抽取到一个类中(父类),让多个类去继承该父类,
多个类就可以获取父类的成员
继承中成员方法的特点&方法的重写
继承的特点:
1.java中,类只支持单继承,不允许多继承(你只能有一个爸爸)
2.一个类可以被多个类继承(你爸爸可以有很多儿子)
3.多层继承,一个类的父类可以再去继承另一个父类(爷爷类)
4.子父类的关系是相对的概念
子类没有这个方法,就用父类的
方法的重写:
在子父类中,子类的方法和父类的完全一样(覆盖)
当子类重写了父类的方法之后,使用子类调用的就是子类的方法
使用场景:
当父类方法不能完全满足子类时,方法的重写既可以保留父类的功能,又可以让子类有自己特有的功能
注意事项:
不可以重写父类私有的方法
子类重写的方法权限,必须大于或者等于父类
private < default(默认的) < protected < public
@Override:方法重写
继承中构造方法的执行顺序
在子类的构造方法中,如果没有调用父类的构造或者子类的构造,系统就默认调用父类的无参构造
格式:
class 子类 extends 父类{}
public class ExtendsDemo {
public static void main(String[] args) {
王者农药 农药 = new 王者农药();
农药.agent = "天美";
农药.play();
LOL lol = new LOL();
lol.agent = "腾讯";
lol.play();
}
}
class game{
String name;
double version;
String agent;
public void play() {
System.out.println("打排位");
}
public void pay() {
System.out.println("买皮肤");
}
public void update() {
System.out.println("游戏更新");
}
}
class 王者农药 extends game{
@Override
public void update() {
System.out.println(“手机端更新”);
}
}
class LOL extends game{
@Override
public void update() {
System.out.println(“PC端更新”);
}
}