A.
面向对象的基本特征
1.封装性
2.继承性
3.多态性
B.
对象
实例化
:运算符
new
为对象分配内存空间,它调用对象的构造方法,返回引用;一个类的不同对象分别占据不同的内存空间。
C.
重写与重载区别
方法
重写
:
子类中重写的方法和父类中被重写的方法要具有相同的名字,相同的参数表和相同的返回类型,只是函数体不同。
方法重载: 是指多个方法享有相同的名字,但是这些方法的参数必须不同,或者是参数的个数不同,或者是参数类型不同。返回类型不能用来区分重载的方法。
重写方法的调用原则:java运行时系统根据调用该方法的实例,来决定调用哪个方法。对子类的一个实例,如果子类重写了父类的方法,则运行时系统调用子类的方法;如果子类继承了父类的方法(未重写),则运行时系统调用父类的方法。
D. final
关键字
final 关键字可以修饰类、类的成员变量和成员方法,但final 的作用不同。
1) final 修饰成员变量:
final修饰变量,则成为常量,例如
final type variableName;
修饰成员变量时,定义时同时给出初始值,而修饰局部变量时不做要求。
2) final 修饰成员方法:
final修饰方法,则该方法不能被子类重写
final returnType methodName(paramList){
…
}
3) final 类:
final修饰类,则类不能被继承
final class finalClassName{
…
}
E.
实例成员和类成员(static 关键字)
用
static 关键字可以声明类变量和类方法,其格式如下:
static type classVar;
static returnType classMethod({paramlist}) {
…
}
如果在声明时不用
static 关键字修饰,则声明为实例变量和实例方法。
1) 实例变量和类变量
每个对象的实例变量都分配内存,通过该对象来访问这些实例变量,不同的实例变量是不同的。
类变量仅在生成第一个对象时分配内存,所有实例对象共享同一个类变量,每个实例对象对类变量的改变都会影响到其它的实例对象。类变量可通过类名直接访问,无需先生成一个实例对象,也可以通过实例对象访问类变量。
2) 实例方法和类方法
实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,实例方法由实例对象调用。
但类方法不能访问实例变量,只能访问类变量。类方法可以由类名直接调用,也可由实例对象进行调用。类方法中不能使用
this或super关键字。
举例
:
class
Member {
static
int
classVar
;
int
instanceVar
;
static
void
setClassVar(
int
i) {
classVar
=i;
//instanceVar=i;
}
static
int
getClassVar()
{
return
classVar
; }
void
setInstanceVar(
int
i)
{
classVar
=i;
instanceVar
=i; }
int
getInstanceVar()
{
return
instanceVar
; }
}
public
class
MemberTest{
public
static
void
main(String args[]) {
Member m1=
new
Member();
Member m2=
new
Member();
m1.setClassVar(1);
m2.setClassVar(2);
System.
out
.println(
"m1.classVar="
+m1.getClassVar()+
" "
+
"m2.ClassVar="
+m2.getClassVar());
m1.setInstanceVar(11);
m2.setInstanceVar(22);
System.
out
.println(
"m1.InstanceVar="
+m1.getInstanceVar()+
" "
+
" m2.InstanceVar="
+m2.getInstanceVar());
m2.setInstanceVar(44);
System.
out
.println(
"m1.InstanceVar="
+m1.getInstanceVar()+
" "
+
" m2.InstanceVar="
+m2.getInstanceVar());
}
}
思路:
m1 -> 有自己的
instanceVar
成员变量
m2 -> 有自己的
instanceVar
成员变量
但是
,m1
与
m2
将共同指向类变量
classVar
Java
语言中,用
abstract
关键字来修饰一个类时,这个类叫做抽象类,用
abstract
关键字来修饰一个方法时,这个方法叫做抽象方法。格式如下:
abstract class abstractClass{ …} // 抽象类
abstract returnType abstractMethod([paramlist]) // 抽象方法
abstract class abstractClass{ …} // 抽象类
abstract returnType abstractMethod([paramlist]) // 抽象方法
接口是抽象类的一种