JAVA中复写其实就是覆盖,是针对java类中的方法二言的,覆盖存在在于继承中,子类建立自己的对象,并继承父类的方法,并复写父类的功能并形成自己的功能,覆盖的前提是子类与父类方法名,返回值类型一样,参数类型名,个数要一致,还要确保父类方法的权限被子类访问的到!
当覆盖的父类方法没有功能体时,那么子类在建立对象时一定要实现该方法,否则子类继承了父类的抽象方法之后不能建立自己的对象。
当父类的方法被关键字final修饰时就不能被子类覆盖,只能调用父类的方法。
重载要求是两个方法名一致,而参数类型和数量在整体上不一致。当子类调用父类的方法功能时只需要通过参数的类型和数量来指定需要调用哪个方法。重载侧重于类中的成员函数名而言,而覆盖是真对调用的方法功能而言。
JAVA中的构造函数是类的对象一建立就开始运行的,用来给对象进行初始化的,当构造函数被关键字private修饰时就不能在其他类中通过new关键字建立自己的对象了,这时只能通过自己类中的方法返回对象,要么自己类中建立对象,这种模式被称为单例设计模式,分为饿汉式设计模式和懒汉设计模式。
饿汉设计模式实现如下:
class Pri
{
private static Pri p=new Pri();
privatr Pri(){}
public static Pri show()
{
return p;
}
}
懒汉设计模式实现如下:
class Pri
{
static private Pri p=null;
private Pri(){}
public static Pri show()
{
if(p==null)
{
p=new Pri();
}
return p;
}
}
当然懒汉设计模式一般不太安全,它其实体现的是延迟加载!建议使用饿汉设计模式。
当子类继承父类建立子类对象时其实就是通过构造函数先去对所继承的父类进行初始化,然后在初始化自己的类,当父类构造函数重载时,如果子类进行初始化进行参数传递时一定确保子类有自己的函数能够访问到父类。
构造函数因为给对象进行初始化的,只运行一次,所以不能被其他方法体进行调用,
构造代码块也是用来给对象进行初始化的,它是先于构造函数给对象初始化,和构造函数一样只运行一次。