java中面向对象之多态、抽象类、接口

多态,就是父类引用指向子类对象

成员变量

编译看父类,运行看父类

构造方法

创建子类构造方法的时候,访问父类的构造方法,对父类数据进行初始化

成员方法

编译看父类,运行看子类
java中的多态有一个叫动态链接的特性,当父类中的一个方法只有在父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用调用; 对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接

静态方法

编译看父类,运行看父类
静态方法是类方法,编译运行看的都是父类

结论:

只有非静态的成员方法运行的时候是看子类,其余全都是看父类

多态的优缺点

缺点:无法使用子类特有的属性与方法

抽象类

特点:
用关键字abstract修饰
抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
抽象类不能直接被实例化,通过多态的方式实例化
抽象类的子类,如果重写了父类所有抽象类,那么它是个具体类,否则还是抽象类
有构造方法,用于给子类访问父类数据的初始化
抽象类中可以没有抽象方法,但是没什么意义
abstract不能跟哪些关键字共存
private冲突
final冲突
static无意义

接口的特点

  • 写法:interface 接口名{}
  • 接口中的方法都是抽象的
  • 类实现接口是用implements这个关键字
  • class 类名 implements 接口名{}
  • 接口无法被实例化,只能按照多态的方式实例化
  • 接口的子类,可以是抽象类,但是意义不大,正常来说是具体类,然后重写接口中的抽象方法

接口的成员特点

成员变量:是常量,而且是静态的
默认修饰符:public static final
建议:自己手动给出。
构造方法:接口没有构造方法。接口的子类不写继承,其super访问的是Object
成员方法:只能是抽象方法,不能带有主体
默认修饰符:public abstract
建议:自己手动给出。
接口中的成员都是公共的,必须是public权限

类,接口继承的特点

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

抽象类,与接口的区别

抽象类:

构造方法:有
成员变量:可以是变量,也可以是常量
成员方法:可以是抽象方法,也可以是非抽象方法

接口

构造方法:无
成员变量:必须是常量
成员方法:必须是抽象方法

设计理念的区别

抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。
接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。

多态的常用

具体类:基本不用
抽象类:常用
接口:最常用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值