day11 继承、super、final、覆写

本文详细介绍了Java中的继承概念,包括单继承特性、代码重用性以及默认继承Object类。通过`extends`关键字实现继承,并讲解了`super`关键字在访问父类属性和调用父类构造方法中的应用。此外,还探讨了方法覆写,强调了覆写的目的和条件。最后提到了`final`关键字的作用,包括防止类被继承、变量被修改以及方法被覆写。
摘要由CSDN通过智能技术生成
  1. 继承
    1.1 是什么
  • java 中只支持单继承,一个类只能有一个父类
  • 什么是继承 : 提高代码的复用性,父类的功能,子类可以直接使用,使子类功能更加强大
  •  	在java中 使用extends 关键字表示
    
  •  	语法 : public class  类名  extends 父类名{ 类体  }
    
  • 目的 : 提高代码重用性
  • 一个类如果没有显示继承另外一个类的话,那么该类默认继承 Object
  •  	java.lang.Object 是java中的祖类(祖宗) 
    
  •  	也就意味着 Object中的属性  是所有类都有的
    

1.2 能做什么
代码重用,子类可以直接使用父类的属性和方法
如果父类功能不能满足子类需求,还可以对父类方法进行重写
使用多态
1.3 怎么用
使用extends关键字

  1. Super
    2.1 是什么
  • super : 官方给出的说法是 super保存了父类型特征
  • 在子类中 访问父类的属性
  • super 用法 :
  •  1 用于成员/构造方法中区分子类和父类同名的成员属性
    
  •  2 用于子类构造方法中,调用父类构造方法(必须出现在子类构造方法的第一行)
    
  •  	语法 : super(参数);
    
  •  	如果 子类构造方法中 没有this(xxx) 也没有 super(xxx) 那么 默认会有一个 super();
    
  •  		去调用父类的无参构造
    
  •  this() 和 super()  都必须出现在构造方法第一行,那么就意味着 它俩不能同时出现
    
  • this和super 都不能在静态方法中使用
    2.2 怎么用

2.3 调用父类构造

  • 子类构造方法使用super(); 去调用父类的构造方法
  •  	1 创建对象 
    
  •  	2 初始化父类属性
    
  • 如果构造方法中没有显示this()和super() 则第一行 默认是 super() 调用父类无参
  • this() 和 super() 为什么必须出现在构造方法第一行?
  •  super() : 用来调用父类构造,初始化父类属性,并且创建对象(最终肯定会调用到Object,通过Object创建对象)
    
  •  	既然是创建对象的,那么只能在构造方法第一行,因为构造方法还有初始化成员属性的功能
    
  •  	成员属性想要初始化,必须有存储它的空间,而这个空间就在对象中
    
  •  	所以要保证现有对象,再有数据初始化
    
  •  	所以 super()必须在第一行
    
  •  this() : 重载调用当前类的其他构造方法
    
  •  	保证先有对象
    

2.4 注意
this() 和 super() 不能同时出现,因为两个都必须写在第一行
2.5 实例语句块和构造方法

  • 实例语句块 : 可以等同看做成员方法,肯定需要使用对象调用的
  • 但是由于没有名字,不能手动调用,只能自动调用
  • 所以 只要创建完对象 就立刻执行
  • 所以 实例语句块是在创建对象后执行,并且执行构造方法体之前
  1. 覆写
    3.1 是什么
  • 覆写 : 覆盖/重写/覆写
  • 子类继承父类之后,需要和父类完全一样吗?
  •  不需要
    
  •  	1 子类也有自己的特有属性
    
  •  	2 可以覆写父类的成员方法
    
  • 覆写特指成员方法

3.2 应用场景

  • 1 什么时候需要进行覆写

  • 如果父类的方法已经无法满足子类的需求的时候,需要将父类中的方法进行重写
    
  • 2 重写的条件

  •  	1 必须是有继承关系的体系中
    
  •  	2 方法名必须相同,返回值必须相同,参数列表必须相同
    
  •  	3 不能比原方法有更宽泛的异常
    
  •  	4 不能比原方法有更低的访问权限
    
  •  	5 覆写特指成员方法
    
  • 3 继承最基本的作业 : 代码重用

  • 4 继承最重要的功能 : 方法可以覆写,多态

  • 重写的目的 :

  •  	1 满足当前需求 , 方法体编码
    
  •  	2 错误越来越少,不能有更宽泛的异常
    
  •  	3 使用范围越来越广,不能有更低的访问权限
    
  •  	4 功能越来越强
    
  1. Final
    4.1 是什么
    final : 是修饰符,表示最后的,最终的,不可更改的
    4.2 能干什么
  • 1 修饰的类 不能被继承

  • 2 修饰的变量 就是常量,不能二次赋值(整个程序生命周期中不可更改),没有默认值

  •  	常量一般是public static final 的
    
  • 3 修饰的成员方法不能被覆写
    4.3 怎么用

  • 深入final :

  •  final修饰的变量,内存空间中的值不可更改
    
  •  如果修饰的是引用类型变量,也是一样的道理,但是和引用类型的地址指向的堆内存空间,没有关系
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值