方法重写与多态

1.方法重写
(1)创建一个子类对象,子类对象调用方法XXX,
①如果子类没有XXX方法就调用父类的方法XXX 方法
②如果子类重写了XXX 方法就调用子类的XXX方法
(2)重写规则:
①访问修饰符不能严于父类
②返回值相同或者是其子类
③方法名相同
④参数相同
⑤父类的静态方法不能被重写为非静态方法(静态方法不能被重写),非静态方法不能重写为静态方法
⑥子类可以定义和父类同名的静态方法,用来覆盖父类的静态方法
⑦父类私有方法不能被重写
⑧不能抛出比父类更多的异常
(3)@Override 注解
①会校验父类是否含有该方法
②没有注解就不会校验父类是否有该方法
(4)重写 & 重载
名称 位置 访问修饰符 返回类型 方法名 参数
重写 子类 不能严于父类 相同或子类 相同 相同
重载 同类 无关 无关 相同 不同
(5)toString();
(6)重写equals
①首先判断对象是否是自己
1)this==obj
②判断参数对象是不是和当前对象是同一个类
1)this.getClass().equals(obj…getClass())
2)obj instanceof 类名
③将对象强转为当前对象类型
java.lang.ClassCastException:(可能会出现的异常)(第二步必不可少)
④判断对象具体属性值(自定义)
(7)equals() && == 区别
在这里插入图片描述

①==
1)如果比较的是基本数据类型,比较的值;
2)如果比较的是引用数据类型,比较的地址;
②equals()
1)如果不被重写,和== 没有区别
2)如果被重写 (看重写的规则是什么)
在这里插入图片描述
在这里插入图片描述

(8)String ss=new String(”aa”); 创建了几个对象?
1)一个或者2个
2)如果字符串常量缓冲区存在aa ,就创建一个
3)如果字符串常量缓冲区不存在aa ,就创建两个对象
(9)多态
①同一个引用类型,指向不同的实例对象执行不同的操作
(10)抽象类,抽象方法
①抽象类,抽象方法用abstract 修饰
②抽象类不可以实例化
③抽象方法没有方法体
④抽象方法只能在抽象类中(有抽象方法的类一定是抽象类)
⑤抽象方法必须被子类实现,除非子类也是抽象类(如果子类也是抽象类,抽象方法可以不实现)
(11)向上转型
①语法
<父类类型> 引用名 = new <子类类型>();
②父类的引用调用的方法是子类重写父类的方法,或者继承父类的方法
1)如果子类没有XXX方法就调用父类的方法XXX 方法
2)如果子类重写了XXX 方法就调用子类的XXX方法
③父类不能调用子类特有的方法
(12)向下转型
①语法
1)<子类类型> 对象名= (<父类类型>)引用名;
②向下转型需要强转
③在向下转型中,如果没有转换为真实的子类类型 ,会出现异常
java.lang.ClassCastException: pet.Penguin cannot be cast to pet.Dog
(13)多态的必要条件
①继承
②重写
③向上转型
(14) java 面向对象的特征
①封装
②继承
③多态(抽象)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值