java五分钟O(∩_∩)O哈哈~继承好坑
来源:互联网 发布:windows xp系统还原 编辑:程序博客网 时间:2024/06/07 06:45
java中我们可以利用继承来基于已存在的类构造一个新类,很多人知道java中的继承便是关键字extends,语法结构大概就是:
public class * extends *
但是,其中的一些微小的细节你是否也同样心如明镜呢?试试便知了O(∩_∩)O哈哈~
首先,我贴上要讲解的类的代码以及包的结构(听起来很高端,其实就是包里面有什么东西而已):
com.example.exclass.Employee.java:
package com.example.exclass;public class Employee { private String name; private double salary; public Employee(String name, double salary){ this.name = name; this.salary = salary; } public Employee(){ /* * */ } public String getName(){ return name; } public double getSalary(){ return salary; }}
com.example.exclass.Manager.java
package com.example.exclass;public class Manager extends Employee{ private double bonus; public Manager(String name,double salary, double bonus){ super(name, salary); //使用super调用构造器的语句必须是子类构造器的第一条语句 /* * 如果子类的构造器没有显示地调用超类的构造器,则将自动调用超类默认(没有参数) * 的构造器。如果超类没有不带参数的构造器,并且在子类的构造器又没有显式地调用 * 超类的其他构造器,则 java 编译器将报告错误 */ this.bonus = bonus; } public double getSalary(){ return bonus + super.getSalary(); //这里如果是换成这样引用的话: /* * return bonus + getSalary();或者 * return bonus + salary; * 这两种方法都是错误的,原因是: * getSalary()方法既存在于超类(super class)Employee中,又存在于子类Manager中 * 因此直接调用的话会导致这条语句无限次调用自己,直到整个程序崩溃为止。 * 而return bonus + salary;直接调用Employee域的话也是错误的, * 虽然Manager继承了Employee, * 但由于salary域是私有的,private的,所以除了本类之外其他类都不能调用 * 所以我们有必要在Employee中写一个public方法来得到salary */ }}
com.example.exclass.Main.java
package com.example.exclass;/* * @author Yi_Yuan_n * @2015.10.25 * 这个程序的主要目的是为了描述 * java中关于继承涉及到的某些知识点 */public class Main { public static void main(String[] args){ String name = null; double salary; double bonus; name = "Yi_Yuan_n"; salary = 10000; bonus = 2000; Manager manager = new Manager(name, salary, bonus); System.out.println(manager.getName() + "'s sum is " + manager.getSalary()); Employee employee = new Manager(name, salary, bonus); System.out.println(manager.getName() + "'s sum is " + employee.getSalary()); Employee employee02 = new Employee(name, salary); System.out.println(manager.getName() + "'s sum is " + employee02.getSalary()); }}
运行结果如下:
0 0
- java五分钟O(∩_∩)O哈哈~继承好坑
- O(∩_∩)O哈哈~
- o(∩_∩)o...哈哈
- O(∩_∩)O哈哈~
- O(∩_∩)O哈哈~
- O(∩_∩)O哈哈~
- O(∩_∩)O哈哈~
- 好高兴啊!终于拿到票了~~~ o(∩_∩)o...哈哈
- 因为不知道说什么好 哈哈O(∩_∩)O
- 开始写blog了,o(∩_∩)o...哈哈
- 再次去黄山,o(∩_∩)o...哈哈
- 感冒好了,O(∩_∩)O哈哈~
- 程序员的九重境界,o(∩_∩)o...哈哈
- O(∩_∩)O哈哈~用LiveWriter写日志
- 开始看协议了O(∩_∩)O哈哈~
- 在CSDN安家了。o(∩_∩)o 哈哈
- 五一赠积分 o(∩_∩)o...哈哈
- 请教高手一个问题,o(∩_∩)o...哈哈
- subline 双击带-样式名可以选中 配置
- excel中的表定义导入到powerdesigner
- LeetCode-----283Move Zeroes
- 杨辉三角
- Java中的泛型、反射和正则
- java五分钟O(∩_∩)O哈哈~继承好坑
- iOS设计模式解析(二) —— 原型
- 云计算
- 欢迎使用CSDN-markdown编辑器
- Xcode升级后,轻松解决插件失效问题
- codeforces 570A
- 【整数划分dp(总结)】nyoj 571 整数划分
- 定时任务知多少(三)——任务调度的集群方案
- C语言类型转换规则