继承+多态+抽象类
来源:互联网 发布:玩客云抢购软件3.0 编辑:程序博客网 时间:2024/06/16 02:28
继承
1. “is-a”关系是继承的一个明显特征
2. java中所有的继承都是公有继承,而没有c++中的私有继承和保护继承
3. java不支持多继承,多继承功能的实现方式用接口来实现
4. 阻止继承:final修饰过的类或方法,不可继承
多态
1. java中,对象变量是多态的。如下:Manager is-a Employee
Employee m = new Manager("brain", 3000); //ok 对象变量是多态的
一个Employee变量既可以引用一个Employee类对象,也可以引用一个Employee类的任何一个子类的对象(Manager),但是这样做后就不可以再用继承子类特有的方法,只能看做是超类Employee的对象了
2. 动态绑定
弄清调用对象方法的执行过程十分重要,如下图所示
抽象类
1. 包含一个或多个抽象方法的类本身必须声明为抽象的;抽象类也可以包含具体数据和具体方法
abstract class Person //抽象类{private String name; //具体数据public Person(String n) //构造器{name = n;}public abstract String getDescription(); //抽象方法public String getName() //具体方法 {return name;}}抽象类的抽象方法具体在子类中实现,在接口中可以看到更多的抽象方法
抽象类不能被实例化。可以定义一个抽象类的对象变量,但是只能引用非抽象子类的对象,如下:
Person p = new Student("Brain", "Economics");抽象类助理解示例程序:
package test;import java.util.*;public class Test{public static void main(String args[]){Person[] people = new Person[2];people[0] = new Employee("Bob", 10000, 2017, 6, 28);people[1] = new Student("brain", "Economics");for(Person p: people){System.out.println(p.getName() + ", " + p.getDescription());}}}abstract class Person{private String name;public Person(String n){name = n;}public abstract String getDescription();public String getName(){return name;}}class Student extends Person{private String major;public Student(String n, String m){super(n);major = m;}public String getDescription(){return "a student majoring in" + major;}}class Employee extends Person{private double salary;private Date hireDay;public Employee(String n, double s, int year, int month, int day){super(n);GregorianCalendar cal = new GregorianCalendar(year, month-1, day);hireDay = cal.getTime();}public String getDescription(){return String.format("an employee with a salary of $%.2f", salary);}public void raiseSalary(double percent){salary *= (1 + percent/100);}}output:
Bob, an employee with a salary of $0.00brain, a student majoring inEconomics
阅读全文
0 0
- 继承+多态+抽象类
- 继承、多态、抽象类、接口
- 接口,抽象类,继承,多态
- 继承,抽象类,接口,多态
- 继承、多态、接口、抽象类
- java [继承]-[接口]-[抽象类]-[多态]-[Object]
- 面向对象总结 继承、多态、抽象类
- Java中的继承,多态,抽象类
- python类2继承-抽象-多态
- 继承、多态、封装、抽象类与接口
- 封装 ,继承, 多态,抽象类 ,接口
- java之继承、多态、抽象类
- 继承 多态 接口 抽象类 内部类
- 抽象、封装、继承、多态
- 封装 继承 多态 抽象
- 多态&抽象&继承
- 继承、多态、抽象、接口
- 继承,封装,多态,抽象
- 数据库连接池性能比对(hikari druid c3p0 dbcp jdbc)
- Windows安装Python pyqt5 pip
- 手把手教你全文检索
- Xcode 8.3+ 正确的插件集成方式
- Linux下gcc编译生成动态链接库*.so文件并调用它
- 继承+多态+抽象类
- PHP合并2个数字键数组的值并去重
- java:instanceof的用法
- LruCache
- 通用Mapper插件和分页插件
- 使用VS2010开发ActiveX(MFC)控件(1)——创建
- web性能优化 HTTP 缓存
- 队列学习之LinkedBlockingQueue
- Django 发送邮件