java基础复习5之继承

继承

注:java中继承只能单继承
但是接口是可以extends多个接口的、

类、子类、超类

  • 定义子类的关键词时extends
  • 利用extends继承的一般叫做子类,被继承的一般称为父类或者(超类)
  • object类是所有类的父类

覆盖方法

  • 但出现父类方法不适用于子类方法时,我们可以通过重写方法来达到我们的目的
  • 覆盖方法是可能出现调用父类私有变量的情况,原则上private修饰的变量是不能被直接访问的,所以我们可以通过访问器(get方法)来访问,需要注意的一点是,我们应当调用的是父类的访问器,而不是当前类的的访问器,所以我们可以利用super.get*()来得到父类的私有变量

子类构造器

我们可以在子类的构造器来调用父类的构造器,利用super(父类构造器参数列表)

继承层次

继承不仅限于一个层次,由一个公共超类派生出来所有的类的集合就是继承层次,而从某个特定类到其祖先的路径被叫做该类的继承链。

注意: 有同一个祖先派生出来的类,直接可能没有任何关系

多态

把子类对象赋值给父类变量就是多态

例如 A是B的父类,我们可以 A a=new B(*);

注:关于多态中,子类与父类的方法调用较为复杂,存在很多种情况,这里不做多描述

阻止继承

final关键词

  • 利用final修饰类无法被继承
  • 利用final修饰的方法无法被重写(覆盖)

强制类型转换

当 B extends A时;我们可以A a=new B();

但是此时我们不能使用B类自己声明的新方法,这个时候,我们需要将a变量变成B类型,也就是

B c=(B)a;

这个时候c变量还是指向同一对象,但是可以调用其中的属于B类的方法。

注意: 利用强制类型转换会出现类型不匹配的情况:我们需要判断这个变量是否为该类型也就是

if(a instanceof B){

B c=(B)a;

}

抽象类

关键词:abstract

  • 抽象类不能被实例化

  • 抽象类中可以有实例方法

  • 抽象类中可以没有抽象方法

  • 就算没有抽象方法,抽象类也不能被实例化

  • 类继承抽象类必须实现抽象方法,除非该子类也是抽象类

equals()方法

  • 由于所有类都是object的子类,在object中有一个关于equals的方法,但是object中只是判断了两个对象的地址(也就是利用==判断),地址相同 return true 不同return false。这不满足我们的期望,我们希望的是判断类中的值。所以我们一般都需要重写equals()方法

关于重写equals():

​ 以下是java核心卷的建议

image-20201118105126473

  • 重写hashcode()方法:返回的是散列码

  • 重写toString ()方法:可以将类打印输出,将对象字符串描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值