12、面向对象编程-3

一、继承

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

组合:

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

二、多态

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

要点:

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

2、向上转型

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

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

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

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

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

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

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

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

基本要求:

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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值