20170812 - 今日技能封装 - A
1 静态方法加载几次?
一次,仅在初次加载类文件时加载一次(即第一次新建对象时)
2 类内方法需要加static吗?类外方法呢?
一般而言,不是测试类(无主类)
如不定义,则在其他包中,需要定义一个对象才能调用
3
class aa{
}
BOO xx(){
}
bb.x()
cc.row++
上方代码分别是什么含义?
定义了一个aa的类;
定义了一个xx方法,其返回值为BOO类型,
对象bb调用了x方法
cc对象的row属性加1
4 判断返回值类型应看哪里?
看方法名前类型,而不是看return
5 定义成员变量的方式有几种?可以直接在成员变量下,方法外定义吗?
① 直接在定义时直接赋值
② 在构造中定义
不能,因为方法外无this.
6 final关键字需要掌握什么?
final可以修饰什么?
---
final修饰成员变量
final修饰方法
final修饰类
final修饰静态成员变量
对应情况的含义分别是?
---
修饰成员变量,意味着该变量在初始化后不可改变,那么该变量应如何初始化呢?
①在构造方法中;②声明同时初始化
修饰局部变量,同上,只是初始化方法仅有②
修饰方法,意味着该方法不能被重写,防止子类定义新方法时不小心的重写。
如坦克继承了车类,车类有一个打火的方法,而坦克的在定义开炮时有可能也定义打火方法,
导致不小心重写了父类的方法,后续再调用打火方法则为子类的打火,非原本的打火启动,造成混淆。
修饰类,则该类不可继承
修饰静态成员变量,则意味着该变量已为常量,无法再变更。(可通过类名.变量名调用)
其特点是,在调用时,会直接按照常量调入,无需载入类。
触类旁通,用以判断 “蓝字,一起变色的就是相同变量”
7 static修饰关键词需要掌握什么?
static关键词可以修饰什么?
成员变量
方法
static块
不同情况下的含义分别是什么?
static修饰成员变量,则该变量会独立于对象的数据结构中,只能通过类名.变量访问,
static修饰的成员变量存储在哪?
和类的信息一样存储在方法区中,由于类仅在方法区加载一次,所以static修饰的成员变量也仅有一份
可否定义一个不赋值的静态成员变量,再在子类的构造方法中直接修改?
不可直接修改(s = xx),类的成员变量属于类,必须通过类.变量(cell.s = xx)来访问修改。
何时需要用static修饰成员变量?
所有对象的值都一样的,做成静态,不一样的,做成实例。
static修饰方法
修饰的方法与对象无关,仅与类有关(修饰符为类名.而不是this,)——因此无法访问类内部成员变量,同样是用类名.方法调用
什么时候需要加static?在类中定义需要吗?应如何理解它?
当需要在主类中调用时(主类中无this.,因此调用同一类下的方法需要用类名.方法来访问)。
不需要,加了类内调用该方法皆需要加类前缀。
暂时只要记住上面一个用法即可,在其他对象类中继续按照“返回值类型 方法名”创建即可。
static块
在类加载期间运行一次,即在在创建对象前运行。
什么情况需要用到static块?
一般用于加载对象公用的资源。
练习:
首先在子类重写了一个父类的方法a(),再在子类中定义了一个同名静态的方法,是否会报错?
不会,因为两者实际名为this.a();一个为类名.a(),实际并不冲突——调用的方式也不同。
8 继承得来的成员变量需要在哪里定义?可以直接在类内部定义吗?如果不是继承
在子类的构造方法中定义。不可以,因为类内部无this. 只有类内部的方法有this.。则直接在类内
定义——也不可以,外部无this.
9 题目中的“直接调用”意味着什么?
可以在内部直接使用。
9 成员变量有几种访问修饰?类呢?分别的访问权限是?
public protected 不加修饰 private
public:本类,子类,同包类,其他包(通过import新建对象后访问)
protected:本类,子类(跨包继承可以),同包类
不加修饰:本类,同包类(跨包继承不可,本类继承可以)
private:本类
10 解题技巧有哪些?
首先看主类,有看不懂的回看其他附类;
快速把握题意,明确当题要考的是什么知识点
3 整合联系起相关知识点
如判断是否重写,还需判断重写方法返回值类型