JavaSE--继承、抽象类及接口
来源:互联网 发布:js 控制div移动 编辑:程序博客网 时间:2024/05/22 05:24
1. 继承(extends)
如果多个类之间有多个相同的功能,可以将这些功能提取到一个类中,这个类为父类,其他类继承父类基本的功能。继承提高了代码的复用性,同时让类与类产生了关系,给面向对象的另一个特征"多态"提供了前提。
Java中允许单继承,不直接支持多继承,而多继承是以接口多实现的方式来完成。单继承指一个子类只有一个父类,多继承指一个子类可以有多个父类,多继承的弊端在于多个父类之间有相同功能时,导致子类的继承会引起不确定性,所以Java中不直接支持多继承。Java中支持多重继承,这样就形成了继承体系,对于多重继承体系关注的重点是了解顶层的功能,创建底层子类对象来实现功能。
1.1 继承中的成员变量
对象在堆中的创建过程:
如果在子类和父类定义了相同的成员变量,该成员变量同时存在于子类对象的堆空间中,可以通过super来访问同名的父类成员变量,结合对象的创建过程,有如下的代码进行说明。
1.2 继承中的函数重写
子类可以对父类的某一功能进行扩展,在父类原有的基础上添加属于自己的功能内容,具体为:子类函数里可以使用super引用父类的同名函数,并添加自己的内容。
子类函数重写需要注意:1.函数的返回类型、函数名、参数列表要一样;2.子类函数的权限要大于等于父类函数的权限;3.若父类函数为静态子类函数也为静态;
1.3 final 关键字
final关键字的使用是为了使其修饰的成员不被修改,final关键字可以修饰类,方法,变量(成员变量,局部变量,静态变量)。
当父类的某一方法不想被子类重写时,可以对该方法进行final修饰,但子类依旧可以使用父类的该方法。当使用final修改某类时,其他类无法继承于该类。final修饰的变量是一个常量,只能被赋值一次,这样可以提高常量的阅读性,该final修饰的常量名都为大写且使用"_"进行名词的连接。
2.抽象类(abstract)
当父类的某一方法不具体时,可以将该方法定义为抽象方法,而该父类就为抽象类,抽象类的抽象方法必须由子类来具体化。
注意:1.子类必须覆盖父类所有的抽象方法才能实例化;2.抽象类一定是父类,抽象类不能创建对象;3.抽象类可以有构造函数,来给子类对象进行初始化;4.抽象关键字abstract不可以和这些关键字共存:fina、priva、static;
3.接口(interface)
当抽象类的所有方法都为抽象方法时,可以把该抽象类定义为接口。即接口不能创建对象,因为其本质是抽象类;子类必须覆盖接口中所有的抽象方法,否则子类是一个抽象类。
使用“public static final 数据类型 变量名"来定义接口中的变量,使用“public abstract 返回值 方法名”来定义接口中的方法,但语句前边的修饰符是不必要的,Java编译时会自动添加。
接口在Java的重要体现是:实现了子类的多继承。如果子类多继承拥有相同名称方法的父类时,子类对象调用父类方法时会引起不确定性,而接口定义的方法都是不具体的抽象类,子类要将这些抽象方法具体化,即将相同方法名的抽象方法进行一次的重写,避免了子类对象调用的不确定性。
子类通过多实现于接口来完成多继承的功能,子类继承于父类拥有了父类的基本功能,而通过接口来扩展其他的功能。类与类之间是继承关系,类与接口是实现关系,接口与接口之间是继承关系,接口之间可以多继承。
本系列为传智播客的JavaSE学习笔记及个人想法总结,版权归作者所有,欢迎转载学习,但需在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
- JavaSE--继承、抽象类及接口
- 【JavaSE】接口和抽象类
- 继承,接口,抽象类
- 抽象类 接口 继承
- 抽象类 接口 继承
- 接口抽象类继承
- 接口、继承、抽象类
- 继承、抽象类、接口
- 接口,抽象类,继承
- 黑马程序员——javase基础--继承、抽象、接口
- JavaSE之抽象类的继承
- JAVASE之继承和抽象类
- 【javase复习】## day4 抽象类、接口 ##
- Javase—抽象类与接口习题
- 黑马程序员_五、继承、多态、抽象类及接口
- C++ 继承抽象基类的接口及实现
- 继承与多态及抽象类与接口
- java继承、抽象、接口介绍及区别
- Github 学习之sshkey创建(一)
- git 进行代码回滚
- android学习笔记
- Python入门教程
- Linux内存管理之slab机制(初始化)
- JavaSE--继承、抽象类及接口
- mac电脑开发android找不到设备
- gradle 简析
- vimrc配置
- 深入探讨 Java 类加载器
- C++静态库与动态库
- 并查集 The Suspects
- FZU 2148 Moon Game(判断凸四边形的个数)
- ios 多语言支持