继承
2017-01-11 00:00
169 查看
Java的类可以分为三类:
类:使用class定义,没有抽象方法。
抽象类:使用abstract class定义,可以有也可以没有抽象方法。
接口:使用inerface定义,只能有抽象方法。
在这三个类型之间存在如下关系:
类可以extends:类、抽象类(必须实现所有抽象方法),但只能extends一个,可以implements多个接口(必须实现所有接口方法)。
抽象类可以extends:类,抽象类(可全部、部分、或者完全不实现父类抽象方法),可以implements多个接口(可全部、部分、或者完全不实现接口方法)。
接口只能extends一个接口。
继承以后子类可以得到什么:
子类拥有父类非private的属性和方法。
子类可以添加自己的方法和属性,即对父类进行扩展。
子类可以重新定义父类的方法,即多态里面的覆盖,后面会详述。
关于构造函数:
构造函数不能被继承,子类可以通过super()显示调用父类的构造函数。
创建子类时,编译器会自动调用父类的无参构造函数。
如果父类没有定义无参构造函数,子类必须在构造函数的第一行代码使用super()显示调用。
类默认拥有无参构造函数,如果定义了其他有参构造函数,则无参函数失效,所以父类没有定义无参构造函数,不是指父类没有写无参构造函数。看下面的例子,父类为Human,子类为Programmer。
类:使用class定义,没有抽象方法。
抽象类:使用abstract class定义,可以有也可以没有抽象方法。
接口:使用inerface定义,只能有抽象方法。
在这三个类型之间存在如下关系:
类可以extends:类、抽象类(必须实现所有抽象方法),但只能extends一个,可以implements多个接口(必须实现所有接口方法)。
抽象类可以extends:类,抽象类(可全部、部分、或者完全不实现父类抽象方法),可以implements多个接口(可全部、部分、或者完全不实现接口方法)。
接口只能extends一个接口。
继承以后子类可以得到什么:
子类拥有父类非private的属性和方法。
子类可以添加自己的方法和属性,即对父类进行扩展。
子类可以重新定义父类的方法,即多态里面的覆盖,后面会详述。
关于构造函数:
构造函数不能被继承,子类可以通过super()显示调用父类的构造函数。
创建子类时,编译器会自动调用父类的无参构造函数。
如果父类没有定义无参构造函数,子类必须在构造函数的第一行代码使用super()显示调用。
类默认拥有无参构造函数,如果定义了其他有参构造函数,则无参函数失效,所以父类没有定义无参构造函数,不是指父类没有写无参构造函数。看下面的例子,父类为Human,子类为Programmer。
相关文章推荐
- js 继承 http://bbs.51js.com/thread-72698-1-1.html
- 多重继承、虚基类继承时,显式地调用基类构造函数,对象是如何初始化的问题
- javascript复习笔记六----面向对象程序设计(继承)
- JavaScript继承详解(三)
- ThinkPHP3.2.3中Controller的继承
- 多边形周长计算(继承)
- 继承与合成基本概念
- 08-面向对象(继承-Java中的单继承和多重继承). 11-面向对象(继承-子父类中成员变量的内存图解) 11-面向对象(继承-子父类中成员变量的内存图解2
- ADO.NET Entity Framework 如何:通过每种类型一个表继承以定义模型(实体框架)
- virtual 多重继承和虚析构
- 【2014-03-17】继承、接口、抽象、虚方法
- JAVA学习笔记36——泛型2:泛型继承、擦除+泛型接口+泛型无多态、通配符
- C++中基类私有成员会被继承吗
- python_继承
- 寄生组合式继承
- Java 8 默认方法和多继承
- 是否可以继承String类?
- SSH2问题之二继承类的@Transactional
- javascript【继承实现方式 】
- javascript _call3_实现继承