自学java(6)继承类,超类和子类
来源:互联网 发布:网络创业优势 编辑:程序博客网 时间:2024/05/17 21:43
继承:基于已存在的类构造一个新类,继承已存在的类就是复用(继承)这些类的方法和域。在此基础上,还可以添加一些新的方法和域,以满足新的需求,这是java程序设计中的一项核心技术。(is-a)
class Manager extends Employee
{
添加方法和域
}
关键字extends表示继承,在java中的所有继承都是公有继承。
已存在的类称为超类,基类,或父类
新类成为:子类,派生类或孩子类。
在子类中要调用父类中的方法:
super.function();这样的话就算有重名也没有关系。
在java中你不需要将方法声明为virtual,因为java中的动态绑定是默认的处理方式。如果不希望让一个方法具有虚拟特征,可以将它标记为final。
java不支持多继承。
多态:一个对象变量可以指示多种实际类型的现象被称为多态。
动态绑定:在运行时能够自动选择调用哪个方法的现象称为动态绑定。
调用对象方法的执行过程:
(1)编译器查看对象的声明类型和方法名。
(2)编译器将查看调用方法时提供的参数类型。
(3)如果是private,static,final方法或者构造器,那么编译器将可以准确地知道应该调用哪个方法,我们将这种调用方式成为静态绑定。
(4)当程序运行,并且采用动态绑定调用方法时,虚拟机一定调用与x所引用对象的实际类型最合适的那个类的方法。
在覆盖一个方法的时候,子类方法不能低于超类方法的可见性,如果超类方法是public那么子类方法一定要声明为public。
阻止继承:
如果人们希望阻止某个类设计子类,那么就可以在定义它的时候使用final修饰符表示这个类是final类。
final class Excutive extends Manager
{
...
}
强制类型转换:
将一个类型强制转换成另一个类型的过程称为类型转换。
double x = 3.14;
int nx = (int)x;
Manager boss = (Manager)staff[0];
强制转换的唯一原因是:在暂时忽略对象的实际类型之后,使用对象的全部功能。
java的抽象类:(其实我感觉和C++的抽象类没什么差别)
抽象方法充当着占位的角色,它们的具体实现在子类中。
public abstract String function();
包含一个或多个抽象方法的类就叫抽象类。
人们希望超类中的某些方法容许被子类访问,或者容许子类的某个方法访问超类的某个域,这样就将其声明为protected。
(java的受保护部分对于子类及同一个 包中的所有其他类都可见,所以安全性比C++要差一些。)
privata:仅对本类可见。
public:对所有类可见
protected:对本包和所有子类可见。
默认的:对本包可见。
- 自学java(6)继承类,超类和子类
- Core Java (十一) Java 继承,类,超类和子类
- Java继承-类、超类、子类
- Java学习笔记【继承之类、超类、子类】
- 类,超类和子类
- <Core Java> 5.1 类、超类和子类
- Java Exception 在超类和子类间的关系
- Java子类继承父类
- java子类继承父类
- JAVA核心技术 第五章 继承 类、超类、子类 抽象类
- JAVA核心技术 第五章 继承 类、超类、子类 关键字this super 多态 动态绑定
- JAVA核心技术 第五章 继承 类、超类、子类 受保护的对象
- 继承(基类,父类,超类),派生类,子类
- 继承(基类,父类,超类),派生类,子类
- 超类 子类 java核心技术第五章
- 5.1 类、超类和子类
- 5.1 类、超类和子类
- 类,超类和子类(一)
- 九大基础排序总结与对比
- 二分图模板
- Java虚拟机入门(2)------类加载机制(上)
- 在AndroidStudio中使用Kotlin
- LeetCode OJ-141. Linked List Cycle(链表找环)
- 自学java(6)继承类,超类和子类
- Emacs 下安装 python-mode.el
- 窝里割草,我不想说了
- 不用安装客户端访问ORACLE
- android 布局别名的应用
- MYSQL索引详解(学习记录)
- Ubuntu14.04 Shadowsocks服务器安装
- Java多线程-线程的同步(同步代码块)
- Android开发之Failure [INSTALL_FAILED_OLDER_SDK]错误