12、面向对象编程-3

    技术2025-07-29  23

    一、继承

    1、object类

    面试题:请写出object类的6个方法

    方法摘要(public方法)

     boolean

    equals(Object obj)  指示其他某个对象是否与此对象“相等”。

     Class<?>

    getClass() 返回此 Object 的运行时类。

     int

    hashCode() 返回该对象的哈希码值。

     void

    notify()  唤醒在此对象监视器上等待的单个线程。

     void

    notifyAll()    唤醒在此对象监视器上等待的所有线程。

     String

    toString() 返回该对象的字符串表示。

     void

    wait()  在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。

     void

    wait(long timeout)    在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。

     void

    wait(long timeout, int nanos)     在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。

    方法摘要(protected方法)

    protected  Object

    clone()      创建并返回此对象的一个副本。

    protected  void

    finalize()  当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

    2、成员变量的隐藏

    父类和子类拥有同名变量,分别占有自己的空间,优先使用子类中的变量。

    注意:

    构造方法的第一条语句默认是super(),含义是调用父类无参数的构造方法每个类创建时最好提供无参构造方法构造方法的第一条语句可以是通过super或者this调用构造方法,须是第一条语句构造方法中不能同时使用super和this调用构造方法,并不是说不能同时出现this和super

    3、super关键字

    super可以调用父类成员变量、构造方法、方法。

    注意:

    super调用普通方法,位置没有限制super调用构造方法,必须放在第一行若是构造方法的第一行代码没有显式的调用super(...)或者this(...);那么Java默认都会调用super(),含义是调用父类的无参数构造方法。

    4、==和equals

    ==:基本类型表示值相等,引用类型表示地址值相等。equals:Object默认比较两个对象的hashcode。要比较两个对象的内容是否一致时,需重写equals方法

    5、组合

    继承:is-a               组合:has-a

    组合:

    定义一个CPU类、KeyBoard类、Mouse类定义一个电脑类,将CPU、KeyBoard、Mouse类当作Computer类的属性购买配件:在Test类中,分别new一个CPU、KeyBoard、Mouse组装电脑:new一个Computer,传入CPU、KeyBoard、Mouse开机运行电脑。

    二、多态

    1、多态:父类引用指向子类对象

    要点:

    多态与属性无关前提条件:继承、方法重写、父类引用指向子类对象父类引用调用子类重写方法时,多态就出现了

    2、向上转型

    将子类对象赋给父类引用,称为向上转型(upcasting),自动进行类型转换。

    注意:向上转型之后,可以调用子类继承的方法,但不能使用子类特有方法。

    3、向下转型:调用子类特有方法。

    将父类的引用变量转换为子类类型,称为向下转型(downcasting)。

    为了避免ClassCastException,向下转型之前使用instanceof先判断一下。

    instanceof:判断左边对象是不是右边的类型的实例。

    四、简单工厂模式-返回值是父类类型

    不仅可以使用父类做方法的形参,还可以使用父类做方法的返回值类型,真实返回的对象可以是该类的任意一个子类对象。

    基本要求:

    定义一个static方法,通过类名直接调用返回值类型是父类类型,返回的可以是其任意子类类型传入一个字符串类型的参数,工厂根据参数创建对应的子类产品

     

     

     

    Processed: 0.012, SQL: 9