Java继承-类、超类、子类
来源:互联网 发布:tpo小站模考软件mac 编辑:程序博客网 时间:2024/05/21 07:07
class Employee{ private String name; private int age; private double salary; public Employee(){} public Employee(String name,int age,double salary){ this.name = name; this.age = age; this.salary = salary; } //省略getter和setter方法}class Manager extends Employee{ private double bonus; public Manager(){} public Manager(String name,int age,double salary,double bonus){ super(name, age, salary);//调用超类的构造器 this.bonus = bonus; } public double getSalary(){ double salary = super.getSalary();//调用超类的方法 return salary+bonus; } //省略getter和setter方法}
在Java中,所有的继承都是公有继承,不存在C++中的私有继承和保护继承。
使用关键字extends表示继承。
子类比超类实现的功能更丰富,一般把通用的方法放在超类(superclass)中,具有特殊用途的方法放在子类(subclass)中。
当子类需要实现一个同名方法来丰富超类中的方法时,就叫覆盖(override)超类的方法。
文章开头的实例中,Manager类是Employee类的子类,Employee类是Manager类的超类。
当子类覆盖了超类中的方法之后,需要再次调用超类的同名方法时,就需要用到关键字super。当然需要调用超类的方法,就需要使用关键字super。
super关键字和this关键字是不同的,super不是一个对象的引用,不能将super赋给另一个对象变量,它只是一个指示编译器调用超类方法的特殊关键字。
super关键字有两个用处:1.调用超类的构造器;2.调用超类的方法。
同时this关键字也有两个用处:1.引用隐式参数;2.调用该类的其他构造器。
Employee[] staff = new Employee[3]; Manager boss = new Manager("Novak", 29, 80000,2000); staff[0] = boss; staff[1] = new Employee("Murray", 28, 70000); staff[2] = new Employee("Berdych", 28, 650000); for(Employee e :staff){ System.out.println(e.getName()+","+e.getSalary());
e.getSalary()能够确定应该执行哪个getSalary方法。尽管e被声明为Employee类型,但它既可以引用Employee类型的对象,也可以引用Manager类型的对象。JVM能够知道e实际引用的对象类型,能够正确地调用相应的方法。
一个对象变量可以指示多种实际类型的现象叫做多态。在运行时能够自动地选择调用哪个方法的现象叫做动态绑定。
在Java中,不需要将方法声明为虚拟方法。动态绑定是默认的处理方式。如果不希望让一个方法具有虚拟特征,可以将它标记为final。
Java中的类只能直接继承一个超类,不支持多继承,但可以实现多个接口。继承并不仅只限于一个层次,例如可以由Manager类派生出Executive类。
参考自 Java核心技术 卷I 第9版
- Java继承-类、超类、子类
- Core Java (十一) Java 继承,类,超类和子类
- 自学java(6)继承类,超类和子类
- Java学习笔记【继承之类、超类、子类】
- Java子类继承父类
- java子类继承父类
- JAVA核心技术 第五章 继承 类、超类、子类 抽象类
- JAVA核心技术 第五章 继承 类、超类、子类 关键字this super 多态 动态绑定
- JAVA核心技术 第五章 继承 类、超类、子类 受保护的对象
- 继承(基类,父类,超类),派生类,子类
- 继承(基类,父类,超类),派生类,子类
- 超类 子类 java核心技术第五章
- java 子类继承父类 -- 重写、覆盖
- JAVA 继承 父类子类 内存分配
- java 子类继承父类运行顺序
- JAVA 继承 父类子类 内存分配
- JAVA 继承 父类子类 内存分配
- Java子类与父类的继承
- 查看oracle数据库的连接数以及用户
- 动态规划之0_1背包
- leetcode-88 Merge Sorted Array
- java基础篇---反射机制
- 开源视频图像处理库
- Java继承-类、超类、子类
- oracle如何查询和停止正在运行的job
- (others)Linux内核ARP发送函数分析
- 等差数列
- 学习这东西确实得稳扎稳打,勿焦勿躁
- 蓝桥杯-基础练习-十六进制转八进制(被超时了!!!)
- CentOS 7如何将.deb文件转换位.rpm
- 数据库调优教程(一)前言&慢查询定义
- C#委托的BeginInvoke和EndInvoke方法