Java基础总结(四)

关于继承及方法重写

  • 概念:多个类里有相同的内容,把相同的内容进行抽取,此时通过extends关键字,使得原来的类与新类就产生了继承关系,原来的类称为子类,新类称为父类。
  • 方法重写规则:
    1、方法签名(方法名+形参列表)一致
    2、方法返回类型:①若返回类型为基本类型或void,则返回值相同
    ②若返回类型为引用类型,子类的方法返回类型须和父类方法返回类型相等,或是其子类
    3、访问权限修饰符:子类所重写方法的访问权限须大于等于父类

向上造型

				向上造型创建的对象能调用哪些方法看父类,具体执行看子类

关于static

1、静态成员变量,亦称作类变量(其与类一个级别)。随着类的加载(方法区的静态常量池)而加载方法区的静态区,
Java基础总结(四)
注意

  • 类只加载一次
  • 在类加载的过程中信息自动存入方法区
  • 构造方法是对象级别,且被调用才执行,而静态变量和类同级别,故构造方法不可定义静态变量

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 ++;
	}
}