您的位置:首页 > 编程语言 > Java开发

java学习路线__面向对象__抽象类的定义与使用__12

2018-04-08 23:15 302 查看

抽象类的定义与使用

一:抽象类基本概念

所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。

对象多态性的核心本质是方法复写
要是子类没有复写父类的方法则不合乎对象多态性的性能要求

于是有了抽象类,抽象类只是在普通方法的基础上扩充了一些抽象方法而已,并且父类的抽象方法在非抽象子类中必须复写得以实现

abstract 关键字类修饰抽象类和抽象方法

抽象方法所在的类一定是抽象类
含有抽象方法的类一定是抽象类,抽象类不一定含有抽象方法。不管是否含有抽象方法 , 抽象类都无法实例化对象。

抽象方法没有方法体不能使用 也就不能实例化。

抽象类必须要有子类  这决定了抽象类不能和final关键字同用

复写考虑到使用权限 抽象方法的权限四种都可以使用,但是建议使用public,同意书写要求

privat 和 abstract不能同时使用


可能会见到这样的形式:抽象类内部提供了一个static的内部类用于输出抽象类的属性

这是非正常使用但是属于封装类的概念,将此抽象类的子类给封装了,但是开发不使用这样的概念 (了解即可)
抽象类分为两种:内部类抽象和外部类抽象
内部类抽象极少使用,外部类抽象会语法错误

正常做法是子类继承抽象类并复写父类的抽象方法

抽象类的对象可以通过对象实现多态性
抽象类也有构造方法,抽象类也仅仅是比普通java类多了抽象方法而已
抽象类的子类实例化前一定实例化了父类,在实例化对象有以下的过程

进行类的加载
进行类对象的空间开辟
进行类的对象中的初始化(构造方法)构造方法还没执行,类中对象的属性以默认值进行赋值。

二:抽象类使用限制

抽象类中允许不定义任何抽象方法 但是此时的抽象方法依旧不能实例化
抽象类一定不能够使用final 定义 也不能使用 private 定义
可是在内部抽象类使用static 关键字修饰不会报错

三:抽象类提供模版设计模式

抽象类的特点是强制规定非抽象子类对某方法进行方法复写

抽象类也有起到规范模版作用

抽象类虽然规定了子类必须要实现的功能,但是抽象类依旧有单继承的局限

抽象类必须要经过子类进行实例化处理

记录时间:(2017年04月08日 23:14  抽象类提供了类的设计模式,以前没有注意到的知识点)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 面向对象