JAVA面向对象第四章

实现方法重写

深入理解继承相关概念

了解Object类

会使用重写实现多态机制

会使用instanceof运算符

会使用向上转型

会使用向下转型

方法的重写或方法的覆盖(overriding)

子类根据需求对从父类继承的方法进行重新编写

重写时,可以用super.方法的方式来保留父类的方法

构造方法不能被重写

方法重写规则

方法名相同

参数列表相同

返回值类型相同或者是其子类

访问权限不能严于父类

父类的静态方法不能被子类覆盖为非静态方法,父类的非静态方法不能被子类覆盖为静态方法

子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法(注:静态方法中无法使用super) 父类的私有方法不能被子类覆盖

不能抛出比父类方法更多的异常

方法重写vs方法重载

   比较项

位置

方法名

参数表

返回值

访问修饰符

方法重写

子类

相同

相同

相同或是其子类

不能比父类更严格

方法重载

同类

相同

不相同

无关

无关

Object类

Object类是所有类的父类(所有的类会直接或者间接的继承object类)

Object类被子类经常重写的方法

方法

说明

toString()

返回当前对象本身的有关信息,按字符串对象返回

equals()

比较两个对象是否是同一个对象,是则返回true

hashCode()

返回该对象的哈希代码值

getClass()

获取当前对象所属的类信息,返回Class对象

多态

为什么使用多态

代码重复,多态可增加代码重用性。

 

 

 

 抽象方法与抽象类

抽象方法没有方法体

抽象方法必须在抽象类里

抽象方法必须在子类中被实现,除非子类是抽象类

public abstract class Pet { 
       public  abstract void toHospital();
}

这里就在pet类里有一个抽象方法,此时方法和类都是抽象的。

抽象类里也可以实现普通方法

向上转型

此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法

此时通过父类引用变量无法调用子类特有的方法 所以就要用到向下转型

向下转型

 

在向下转型的过程中,如果没有转换为真实子类类型,会出现类型转换异常

instanceof

用于比较引用对象是否为同一个。

子类 instanceof 父类

使用instanceof时,对象的类型必须和instanceof后面的参数所指定的类在继承上有上下级关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值