自学java(6)继承类,超类和子类
2016-08-08 10:31
183 查看
继承:基于已存在的类构造一个新类,继承已存在的类就是复用(继承)这些类的方法和域。在此基础上,还可以添加一些新的方法和域,以满足新的需求,这是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:对本包和所有子类可见。
默认的:对本包可见。
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核心技术 第五章 继承 类、超类、子类 抽象类
- Java继承-类、超类、子类
- JAVA核心技术 第五章 继承 类、超类、子类 关键字this super 多态 动态绑定
- JAVA核心技术 第五章 继承 类、超类、子类 受保护的对象
- Java学习笔记【继承之类、超类、子类】
- Core Java (十一) Java 继承,类,超类和子类
- Java Exception 在超类和子类间的关系
- java中子类继承父类时是否继承构造函数
- java 中子类如何实现对父类私有域的继承
- java中的继承(子类调用父类构造方法还不懂)
- java 自学日志【六】---面向对象之继承
- java构造函数是否可继承,以及子类构造函数可否不使用super调用超类构造函数
- java的main方法能不能被子类继承
- java(子类的继承及对象的构造过程)
- 继承(基类,父类,超类),派生类,子类
- <Core Java> 5.1 类、超类和子类
- java中,子类能不能继承父类的构造方法?
- java中父类子类的继承与函数重写
- 多态的三个条件: 1、要有继承 2、要有重写 3、父类引用指向子类对象----java
- java类继承中父类调用子类函数的问题