类的继承 接口

类的继承

继承的概念

继承就是子类继承父类的属性和方法,使得子类对象可以拥有使用父类的属性和方法。
子类是父类的一个更具体更细化的实体,拥有父类特征和方法也可以拥有子类自己的特征和方法。
例:父类为动物,子类为狗(狗拥有哺乳动物的一些行为和特性但是也有自己的特性和行为)
继承的一个作用是减少代码量,可以将两段代码相同的地方提取出来组成一个父类,减少代码冗余,提升后期代码维护的效率。

继承的格式

class 父类{
}
class 子类 extends 父类 {
}
注意这里的extends是单继承,即一个子类只能继承一个父类,不可以继承多个父类,但是可以多层次继承(比如子类1 extends 父类,子类2extends子类1).
implement 实现的是接口继承,接口支持多接口继承,继承接口的时要实现接口内的所有方法

继承访问命令符

子类继承父类是,访问命令符的范围只能比父类的更大
(访问命令符的范围从大到小为public,protected,default,private)

方法的重写

有时子类会在父类的某一个方法的基础上实现自己的行为,此时需要进行对父类方法的重写,重写方法时方法名,传入参数,返回参数等和父类的方法一致,方法体可以修改。
如果想在父类的基础上进行添加则可以在子类方法体中运用super关键字+方法名,则会先执行父类的方法体后执行子类的方法体。this关键字指向子类自己重写后的方法。
注意如果父类方法被final修饰则不可以在子类中重写。

继承实例

在这里插入图片描述
在这里插入图片描述
(1) 子类继承父类属性和方法
定义了父类animal和子类dog,父类animal有私有属性name和公有属性age,方法为共有run,getname和setname, 私有方法fly. 子类dog的方法为dog子类的printname和重写父类的方法run。
创建新的实体dog d= new dog.
可以看见dog拥有父类的公有属性age和公有方法run,getname,setname但是没有私有属性name和私有方法fly。
如果想调用父类中的私有属性和方法可以通过set和get方法来实现。
在这里插入图片描述

(2)子类方法的重写与调用,子类方法在父类方法基础上增加功能
如果不重写子类中的run方法,调用d的printname方法和run方法,可以看到调用的是父类中的run方法
在这里插入图片描述
如果子类中重写了run方法,则会调用子类中重写的run方法
在这里插入图片描述
如果在子类dog中用了super关键字则先调用的是父类中的run方法,然后再继续执行子类重写方法的功能。
在这里插入图片描述
在这里插入图片描述
(3)父类方法被final修饰不可被重写
如果父类中的方法被final修饰,则子类不可以重写该方法
在这里插入图片描述
在这里插入图片描述
(4)父类方法被重写时子类修饰符只可以比父类的范围大
如果父类run方法访问修饰符为public,子类run方法访问修饰符为protected则会报错,因为public的范围比protected大。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

接口

接口的概念

接口是抽象方法的集合,里面写的都是抽象方法,接口内的方法不能有方法体,接口以interface来声明。
接口不可实例化对象。
接口内可以定义常量,写在接口内的常量用public static finall来修饰,表示静态常量。
一个类通过继承接口的方式,从而来继承接口的抽象方法,一个类如果继承了一个接口,需要将接口内的抽象方法全部重写。一个接口可以有多个方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

接口的格式

public interface 接口名称 [extends 其他的接口名] {
// 声明变量
// 抽象方法
}
接口的继承:用implements来继承接口,接口支持多继承。一个接口只能继承另一个接口,接口之间的继承用extends来实现。
例:University,Teacher为两个接口,Teacher可以继承University这个接口。
public interface University{
//抽象方法一
}
例:public interface Teacher extends University{
//抽象方法二
}
如果有一个Student类继承了Teacher的接口,那么在学生类里面要重写Teacher和University两个接口的所有方法,因为Teacher继承了University这个接口。
例:public class Student implements Teacher{
//抽象方法一
//抽象方法二
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值