抽象类、接口、以及形式参数与返回值

抽象类

概述:
用之前的猫狗、动物举例,动物中不应该具体的东西,而且动物中的吃方法、睡觉方法这些等都不应该也是具体,我们把一个不具体的功能称之为抽象的功能,也叫做抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。

example:

特点:

抽象类和抽象方法必须使用abstract关键字修饰
格式:abstract class 类名 {}

抽象类不一定有抽象方法,有抽象方法的类一定是抽象类

抽象类不能实例化
那么,抽象类如何实例化呢?
按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态

抽象类的子类

要么是抽象类,不需要重写父抽象类的抽象方法
要么重写抽象类中所有的抽象方法,那么这个时候子类是一个具体的类
成员变量:可以是变量,也可以是常量

构造方法:有。可以有构造方法,但是抽象类又不能具体实例化,有什么用呢
用于子类访问父类的初始化

成员方法:可以是抽象方法,也可以不是抽象方法

如果抽象类中包含成员方法是抽象方法,那么就需要强制具体子类去重写

如果抽象类中包含成员方法是非抽象方法,那么继承的子类可以不去调用,提高了代码的复用性
example:

  • 一个类如果没有抽象方法,可不可以定义为抽象类?如果可以,有什么意义?
    抽象类里面可以没有抽象方法
    不能创建对象

  • abstract不能和哪些关键字共存

    • private 冲突
    • final 冲突
    • static 冲突

example:

接口
牢记接口是来做额外的动作的,来体现事物的扩展性

接口的特点

接口用关键字interface表示
格式:interface 接口名 {}
类实现接口用implements表示
格式:class 类名 implements 接口名 {}
接口不能实例化
那么,接口如何实例化呢
按照多态的方式,由具体的子类实例化,这也是多态的一种,接口多态
接口的子类
要么是抽象类
要么重写接口中所有的抽象方法
由此可见最常见的是

接口多态
抽象类多态
具体的类多态
一个简单的接口举例:(可以理解为,使用接口,为cat猫类加了一个新的方法)

 接口成员的特点:
成员变量:只能是常量,并且是静态的
它里面默认有修饰符:public static final
建议:全部手动给出
构造方法:接口里面没有构造方法
成员方法:只能是抽象方法,没有方法体
默认修饰符是:public abstract
建议:全部手动给出
注意:虽然接口里面没有构造方法,但是,所有的类都默认继承一个类:Object,Object是类Object结构的根,每个class都有Object作为超类,所有对象(包括数组)都实现了这个类的方法
成员接口的成员变量默认修饰符:public static final
成员接口的成员方法默认修饰符:public abstract

  • 类与类
    继承关系,只能单继承,但是可以多层继承
  • 类与接口
    实现关系,可以单实现,可以多实现,还可以在继承一个类的同时实现多个接口
  • 接口与接口
    没有实现关系,只有继承关系,可以单继承,可以多继承

 

形式参数和返回值

形式参数

  • 形式参数:
    基本数据类型
    引用数据类型:
    类:实际上需要的是该类的对象
    抽象类
    接口

类:实际上需要的是该类的对象 代码举例:

返回值

  • 返回值类型:
    基本数据类型
    引用数据类型
    类:当一个类作为返回值类型的时候,需要的是该类的对象
    抽象类
    接口

 感谢阅读!我是酷酷的涛!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值