JAVA知识点7(继承,覆盖,多态)

第七章

一.继承

1.作用:有了继承才有方法的覆盖和多态机制。

2.语法格式:
【修饰符列表】 class 类名 extends 父类名{
类体
}//没有父类名,默认继承Java库中的java.lang.Object类。

3.java语言只能单继承,一个类不能同时继承多个类,C++支持多个类

4.哪些不能继承呢?
——私有的不支持继承
——构造方法不支持继承

5.虽然只能单继承,但一个类可以间接继承其他类:
C extends B{
}
B extends A{
}
C类间接继承A类

6.构造函数能否被继承,为什么?
因为子类继承父类的时候,先运行父类构造函数;具体的说就是运行父类时就会先“调用”父类的构造函数,注意“调用”和继承不是一个含义,实质上是“自动运行”。

调用构造方法时,在实例化子类对象的同时,super也会实例化父类对象
继承下构造方法执行顺序:先运行父类构造,再运行子类构造
子类构造中,如果没有指定调用父类的哪一个构造,那么默认调用父类的无参构造可以使用super关键字来指定调用父类的构造(与构造方法向结合来看)

二.覆盖(重写)

1.什么是覆盖?
它是覆盖了一个方法并且对其重写,以求达到不同的作用。

2.为什么需要方法重写?
因为向上转型后,父类引用不能调用子类的成员(即父类引用指向子类对象,但只能调用父类成员),可以使用方法重写来改善
编译时按父类类型编译,运行时按子类对象运行

3.满足什么条件?
——具有继承关系的父子类之间
——方法重写的时候:返回值类型:父类返回值类型是引用类型的话,那么子类中重写的方法的返回值,可以是父类返回值类型的子类(即父类中返回类型与子类中返回类型也是继承关系),方法名,形参列表相同
——方法重写的时候:访问权限不能更低,可以更高(注意:重载没有此限制)
——方法重写的时候:抛出异常不能更多,可以更少

注意:
——私有的不支持覆盖
——构造方法不支持覆盖
——静态方法不存在覆盖。
(覆盖只针对方法,不谈属性)

重载和重写的区别:
在这里插入图片描述
一个方法在重写的同时可以被重载
在父类和子类中,子类由于继承而拥有了父类的某些方法,此时在子类可以再进行重载(必须具有不同的参数列表),这个地方很容易和重写相混淆,因此千万注意。

三.多态。

1.涉及的几个概念:
*向上转型
子类型–>父类型(自动类型转换)
*向下转型
父类型–>子类型(强制类型转换)
(两种类型都需要继承关系,没有则编译无法通过

2.向上转型例子
Animal a=new Cat();//a这个引用数据类型为Animal,Animal.class字节码中有move()方法,编译通过,此过程称为静态绑定。
a.move();//新创建的是Cat对象,Cat.class字节码中有move()方法,此时发生了程序的动态绑定
(无论Cat有没有重写move方法,运行阶段一定调用的是Cat对象的move方法。因为底层真实对象就是Cat对象。)
Cat().move();

3.向下转型例子
Animal a3=new Bird();;
Bird b=(Bird)a3;//1.编译没有问题,父类型转换为子类型,向下转型.
Cat c=(Cat)a3;
//2.编译通过但运行阶段会出现异常,因为JVM堆内存中真实存在的对象是Bird类型,而Bird类型无法转换为Cat对象,因为两者没有继承关系。
//3.为什么需要父类类型转换为子类类型
//父类类型无法调用到子类独有的成员

3.如何避免向下转型出现错误呢?
1.语法格式:
(引用 instancoof 数据类型名)
2.以上运算符的执行结构类型为布尔类型,结果可能是true/false
if(s instanceof Cat) {
Cat s2= (Cat)s;
s2.eat2();
}else if(s instanceof Bird) {
Bird s2=(Bird)s;
s2.fly();
}

4.多态的作用?
降低程序的耦合度,提高扩展力。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值