潜艇游戏第三天
1.设计SeaObject超类;
2.SeaObject类两个构造方法;
3.SeaObject数组、水雷、炸弹数组;
潜艇游戏第四天
1.重写move移动;
2.修改访问控制修饰符;
3.设计Images图片类;(Directory//img-----cv)
-----------------------------------------------------------------------------------------------------------
技能点:重写.package与import. 访问控制修饰符.static;
一、重写(override)
*发生在父子类中,方法名相同,参数列表相同;
*重写方法被调用时,看new 的对象;
遵循“两同两小一大”原则:
* 两同:方法名相同、参数列表不同;
* 两小:返回值类型小于或等于;
* 一大:派生类访问权限大于、等于超类;
二、package和import;
package:
import:
三、访问控制修饰符;
权限: 1.public --------任何类;
2.protected----本类、同包类、派生类;
3.默认的---------本类、同包类;
4.private----------本类;
四、 static:静态的;
1.静态变量:
*用static修饰;
*属于类,方法区中,一份;
*通过类名点访问;
2.静态方法:
a. 特点:static,
类,方法区,一份
通过类名点访问;
* 没有隐式this传递,不能直接访问实例成员;
b.使用:方法的操作对象无关时使用;
3.静态块: static
类
在类被加载期间自动执行,只执行一次;
-------------------------------------------------------------------------------------------------------
补充:
a.成员变量:
*实例变量:没有static修饰,属于对象,存储在堆中,有几个对象就几分, 通过对象来打点;
*静态变量:有static修饰,属于类,存储在方法区中,只有一份,通过类名 点来访问;
b.内存管理:由jvm管理;
*堆:new 出来的对象(实例变量、数组的元素);
*栈:局部变量(包括方法的参数)
*方法区:.class字节码文件(包括静态变量,所有方法);
package ooday04;
public class Test {
Test() {
System.out.println("父类构造方法");
}
void test1() {
System.out.println("父类普通方法");
}
static void test2() {
System.out.println("父类静态方法");
}
static {
System.out.println("父类静态代码块");
}
{
System.out.println("父类非静态代码块");
}
public static void main(String[] args) {
Test t = new Test();
Test2 t2 = new Test2();
}
}
public class Test2 extends Test{
static{
System.out.println("子类的静态代码块"); }
{ System.out.println("子类的非静态代码块");}
Test2(){
super();
System.out.println("子类的构造方法");
}
}
执行顺序: 父类静态代码块
父类非静态代码块
父类构造方法
子类的静态代码块
父类非静态代码块
父类构造方法
子类的非静态代码块
子类的构造方法
a.静态方法随着类加载而加载;
b.非静态和构造方法随着对象的加载而加载;
( 静态方法>非静态方法>构造方法;)