Java基础总结(四)
关于继承及方法重写
- 概念:多个类里有相同的内容,把相同的内容进行抽取,此时通过extends关键字,使得原来的类与新类就产生了继承关系,原来的类称为子类,新类称为父类。
- 方法重写规则:
1、方法签名(方法名+形参列表)一致
2、方法返回类型:①若返回类型为基本类型或void,则返回值相同
②若返回类型为引用类型,子类的方法返回类型须和父类方法返回类型相等,或是其子类。
3、访问权限修饰符:子类所重写方法的访问权限须大于等于父类
向上造型
向上造型创建的对象能调用哪些方法看父类,具体执行看子类
关于static
1、静态成员变量,亦称作类变量(其与类一个级别)。随着类的加载(方法区的静态常量池)而加载方法区的静态区,
注意
- 类只加载一次
- 在类加载的过程中信息自动存入方法区
- 构造方法是对象级别,且被调用才执行,而静态变量和类同级别,故构造方法不可定义静态变量
2、静态方法:随着类的加载(方法区静态常量池)而加载到静态区, 存储是存储在静态区,当方法被调用的时候 被加载到栈 中执行(所有的方法和语句都是在栈中执行),可以被 类名调用也可以被对象调用
注意:
-
静态方法只有被调用,才会执行,故不可定义静态变量
-
静态内容不能直接调用非静态内容,故main方法不可直接调用非静态方法
-
静态方法可以重载
-
java规定:父子类只能出现都是static的方法,但不是重写。
-
迷之案例
public class Test {
public static void main (String[] args){
System.out.println("i = " + AB.i + ",j = " + AB.j);
}
}
class AB{
//加载与执行
/*
* 加载(方法区) 执行(1) 执行(2) 执行(3)
* AB null 0x01 0x01 0x01
* i 0 1 1 1
* j 0 1 1 3
*
*/
static AB ab = new AB();
static int i;
static int j = 3;
public AB(){
i ++;
j ++;
}
}