JAVA--继承、final、super、覆写和多态

继承 : 继承是从已有类中,派生出新的类,新的类拥有父类的属性和行为,并且还能扩展新的属性和行为,java中只支持单继承,不支持多继承,这样可以让java中的继承关系比较简单,一个类只能有一个父类,但是一个父类可以有很多子类,易于维护和管理,为了解决单继承功能变弱问题,java提出了接口,一个类可以实现多个接口。
继承是可以传递的,比如A继承B , B继承C , 则 A也会拥有C的功能,私有属性和构造方法是不能被继承,如果一个类没有显示继承其他类,则该类继承Object
 java.lang.Object 是java提供的根类(祖宗)
Object中的功能,是所有类对象都有的
解决的问题 : 提高了代码的效率,避免了代码的重写,提高代码重用性
 语法 : [修饰符] class  子类名 extends  父类名{ }

final:

final是修饰符,表示最后的,最终的,不可更改的 
类 : final修饰的类 不能被继承 
变量 : 没有默认值,不能二次赋值,必须显式赋值(不能有不赋值的情况) 
方法 : final修饰的成员方法不能被覆写
final 修饰的静态变量,一般称为常量 , public static final xxxx;  常量名建议全部大写

 super :

在有继承关系的体系中,可以通过super表示父类的数据
 作用:
1 、用在成员/构造方法中,区分父类和子类同名的数据(同名后,子类优先级高,想使用父类,就需要使用super.xxx才行)
2 、用在子类构造方法中,调用指定的父类构造方法
语法 : super(参数) ; 必须在子类构造方法第一行
如果子类构造方法中 没有使用 this(xxx)  也没有使用 super(xxx) 则有一个 super() 去调用父类的无参构造
this(xxx) 和 super(xxx) 都必须出现在构造方法第一行,也就意味着 它们两个 不能同时出现
3 、this和super 都不能出现在静态上下文中

覆写: 

Override 是 方法重写/覆写/覆盖  , 覆写特指成员方法,除了成员方法,其他的都不能覆写
当父类的功能满足不了子类需求的时候需要对父类方法进行覆写
覆写条件

1、有继承关系的体系中
2、方法名必须一致,如果方法名不一致,就是两个方法了
3、参数列表必须一致,如果参数列表不一致,这是方法重载,也是两个方法
4、返回值必须一致
5、不能有更宽泛的异常(异常只能越来越少)
6、不能有更低的访问权限

覆写的意义: 功能越来越强、使用范围越来越广、错误越来越少

@Override是源码注解,在编译的时候,判断该方法是否是覆写的方法,防止写错,仅此而已,生成class之后该注解就会被去掉。如果不加,比如方法名写错了,那么最多也就是两个方法,不会报错,但是加上@Override就会进行校验操作

多态:

多态就是里氏替换原则的一种体现,能使用父类的地方就一定可以使用子类
多态 就是 父类引用指向子类对象
父类引用 : 使用父类类型 创建的引用类型变量
指向 : 通过这个引用可以找到谁
通过父类创建的一个引用类型变量,找到了子类的对象
父类类型  变量名 =  new 子类();
有变量的地方,就能发生多态,并且多态发生在赋值的时候
多态的缺点 : 丢失子类特有的属性
多态的几种形式 : 
1 直接多态 : 父类  变量 = new 子类();
2 形参/实参 : 参数列表用父类声明, 调用方法 传递子类对象
3 返回值多态 : 返回值类型是父类类型,但是返回的对象 是子类对象
  多态进行属性调用 : 
         1 父类没有的,都调用不了(因为多态缺点,丢失子类特有的属性)
         2 父类有的,子类没有的,执行父类
         3 父类和子类都有,除了成员方法执行子类,其他全部执行父类(因为只有成员方法可以覆写)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值