初始化构造函数默认为空,如果自己定义了带参数的构造函数,则系统不再自动定义空的函数,这时,在new对象时必须带参数,否则自己要定义出空的构造函数。
this:
public void fun1()
{
System.out.println(name);
}
public void fun2()
{
Person a2 = new Person("a2");
a2.fun1();
this.fun1();
}
Person a1 = new Person("a1");
a1.fun2();
结果:a2
a1
this是当前被调用方法在另外一个对象中的对象名,上面那个this可省。
finalize方法,回收垃圾时自动调用执行,
ststem.gc(),垃圾回收器
static可共享成员变量
静态代码块static{}:在该类中任何一个方法被调用之前执行
单态设计模式:
class Chinese
{
static Chinese objRef = new Chinese(); //static,如果没有,则永远循环创建Chinese对象
public static Chinese getInstance();
{
return objRef;
}
Private Chinese()
{
………………
}
}
无论怎样调用,都只返回一个对象,不可创建多个Chinese对象
内部类中可以访问外部类中的成员变量,但内部类中的变量不能被外部类直接调用
内部类如果用static修饰,就相当于一个外部类
变量名相同时:
public class Outer
{
private int size;
public class Inner
{
private int size;
public void doStuff(int size)
{
size++; //引用的是doStuff中的形参
this.size++; //引用的是Inner类中的成员变量
Outer.this.size++; //引用的是Outer类中的成员变量
}
}
}
方法中也可以定义内部类,但方法中人内部类要访问该方法中的局部变量时,要在局部变量定义之前加final
一个类继承某类后,包含被继承类中的所有内容,但不继承父类的构造方法以及私有成员方法,在子类中可使用super(参数)调用父类的构造方法
子类在调用构造函数时,先去调用父类中不带参数的构造函数
子类中的构造函数可使用super()调用父类中指定的构造函数
子类中的访问权限不能弱于父类
final类不能被继承
final变量就是常量,只能在定义时或在构造方法中赋值,不能再被赋值
final方法不能被子类相同的方法覆盖
static的final变量,在定义时赋值,即可以其他类中直接调用此常量,此时不能在构造函数中赋值
抽象方法:abstract int aa(int x,int y);
抽象类前也要加abstract
抽象类中不是所有的方法都必须是抽象,担只要有抽象方法,类前都要有abstract
抽象类不能产生对象,由子类继承,覆盖抽象方法
instanceof:判断a是否是B的对象 a instanceof B
接口。
}