java学习路线__面向对象__抽象类的定义与使用__12
2018-04-08 23:15
302 查看
抽象类的定义与使用
一:抽象类基本概念
所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。
对象多态性的核心本质是方法复写
要是子类没有复写父类的方法则不合乎对象多态性的性能要求
于是有了抽象类,抽象类只是在普通方法的基础上扩充了一些抽象方法而已,并且父类的抽象方法在非抽象子类中必须复写得以实现
abstract 关键字类修饰抽象类和抽象方法
抽象方法所在的类一定是抽象类
含有抽象方法的类一定是抽象类,抽象类不一定含有抽象方法。不管是否含有抽象方法 , 抽象类都无法实例化对象。
抽象方法没有方法体不能使用 也就不能实例化。
抽象类必须要有子类 这决定了抽象类不能和final关键字同用
复写考虑到使用权限 抽象方法的权限四种都可以使用,但是建议使用public,同意书写要求
privat 和 abstract不能同时使用
可能会见到这样的形式:抽象类内部提供了一个static的内部类用于输出抽象类的属性
这是非正常使用但是属于封装类的概念,将此抽象类的子类给封装了,但是开发不使用这样的概念 (了解即可)
抽象类分为两种:内部类抽象和外部类抽象
内部类抽象极少使用,外部类抽象会语法错误
正常做法是子类继承抽象类并复写父类的抽象方法
抽象类的对象可以通过对象实现多态性
抽象类也有构造方法,抽象类也仅仅是比普通java类多了抽象方法而已
抽象类的子类实例化前一定实例化了父类,在实例化对象有以下的过程
进行类的加载
进行类对象的空间开辟
进行类的对象中的初始化(构造方法)构造方法还没执行,类中对象的属性以默认值进行赋值。
二:抽象类使用限制
抽象类中允许不定义任何抽象方法 但是此时的抽象方法依旧不能实例化抽象类一定不能够使用final 定义 也不能使用 private 定义
可是在内部抽象类使用static 关键字修饰不会报错
三:抽象类提供模版设计模式
抽象类的特点是强制规定非抽象子类对某方法进行方法复写抽象类也有起到规范模版作用
抽象类虽然规定了子类必须要实现的功能,但是抽象类依旧有单继承的局限
抽象类必须要经过子类进行实例化处理
记录时间:(2017年04月08日 23:14 抽象类提供了类的设计模式,以前没有注意到的知识点)
相关文章推荐
- java学习路线__面向对象__继承的定义与使用__9
- java学习路线__面向对象__接口的定义与使用__13
- java学习路线__面向对象__内部类的定义与使用__8
- java学习路线__面向对象__数组的定义与使用__3
- java学习路线__基础入门向__方法的定义与使用__7
- [bxd学习java基本点]12.数组,泛型的使用是为了安全,借鉴数组的定义
- java基础学习面向对象之四种权限修饰符使用 五-12
- [bxd学习java基本点]12.数组,泛型的使用是为了安全,借鉴数组的定义
- java入门学习(12)—内部类的定义及使用初步
- java 接口的定义,使用及和抽象类的区别
- java学习日记_44:面向对象之接口与抽象类的区别
- 0026 Java学习笔记-面向对象-抽象类、接口
- java入门学习(13)—枚举类定义及使用初步
- 【C++学习笔记】12_指针的定义与使用
- (11)Java学习笔记——面向对象05——final关键字 / 抽象类
- java中抽象类的定义和使用
- java学习日记_12:面向对象之如何使用类
- Java学习提要——抽象类的使用限制
- java学习12--函数--函数定义和功能
- java入门学习(11)—接口定义(interface)及使用(implements)