面向对象之继承
来源:互联网 发布:淘宝标错价的法律知识 编辑:程序博客网 时间:2024/05/19 16:05
继承(inherit)
概念:Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。
实例理解:比如可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,则轿车和卡车都有车的属性,但它们又可以有自己的属性,即可以为轿车添加一个小后备箱,而为卡车添加一个大货箱。
Java继承特征:
(1)继承关系是传递的。若类C继承类B,类B继承类A,则类C既有从类B那里继承下来的属性与方法,也有从类A那里继承下来的属性与方法,还可以有自己新定义的属性和方法。继承来的属性和方法尽管是隐式的,但仍是类C的属性和方法。继承是在一些比较一般的类的基础上构造、建立和扩充新类的最有效的手段。
(2)继承简化了人们对事物的认识和描述,能清晰体现相关类间的层次结构关系。
(3)继承提供了软件复用功能。若类B继承类A,那么建立类B时只需要再描述与基类(类A)不同的少量特征(数据成员和成员方法)即可。这种做法能减小代码和数据的冗余度,大大增加程序的重用性。
(4)继承通过增强一致性来减少模块间的接口和界面,大大增加了程序的易维护性。
(5)提供多重继承机制。从理论上说,一个类可以是多个一般类的特殊类,它可以从多个一般类中继承属性与方法,这便是多重继承。Java出于安全性和可靠性的考虑,仅支持单重继承,而通过使用接口机制来实现多重继承。
细节注意:
1、在定义一个类时,如果没有显示指定该类的父类,那么该类就会继承于java.lang.object类,object类是java中所有类的直接或间接类的父类。
例如:
Class parent{
}
Class child extends parent{
}
则parent类继承了object类,只是可以不用写出来。
2、关于继承,父类有的,子类也有;父类没有的,子类可以增加;父类有的,子类可以改变。
1) 构造方法不能被继承:构造方法是用来构造对象是调用的,如果继承父类构造方法,那你new 子类名( )时究竟是构造父类还是子类呢
2) 方法和属性可以被继承
3) 子类的构造方法隐式的调用父类不带参数的构造方法。
4) 当父类有带参数的构造方法时,子类需要使用super来显式的调用父类的构造方法,super指的是对父类的引用。
5) Super关键字必须是构造方法里的第一行语句。
3、父类的private方法和属性不能被继承
实例代码精讲:
public class Inhrience
{
public static void main(String[] args)
{
dog d = new dog();
d.eat();
cat c = new cat();
c.eat();
}
}
class animal
{
public animal()
{
System.out.println("Animal isrunning");
}
public void eat()
{
System.out.println("Animal iseatting");
}
}
class dog extends animal
{
public dog()
{
System.out.println("Dog isrunning");
super.eat();//调用父类eat方法。
}
}
class cat extends animal
{
public cat()
{
System.out.println("Cat isrunnning");
}
}
输出结果:
Animal is running//3)先调用父类Animal不带参数的构造方法
Dog is running//执行Dog中的构造方法
Animal is eatting//super.eat调用父类eat方法
Animal is eatting//继承父类eat方法
Animal is running//先调用父类Animal不带参数的构造方法
Cat is runnning//执行Cat中的构造方法
Animal is eatting//继承父类eat方法
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- 面向对象之继承
- ABAP 面向对象之继承
- JAVA-面向对象之继承
- Java面向对象之继承
- JavaSE0008_面向对象之继承
- 找不到回去的路?
- 如何将程序集(dll)安装到全局程序集缓存(GAC)中
- CScrollView的32768像素限制
- 页面布局:div之float,clear特性
- android 邮件设置
- 面向对象之继承
- MySql实现远程连接
- 面向对象之抽象类
- 面向对象之接口
- 接口与抽象类
- 面向对象之多态
- 黑马程序员-------学习日记Java基础 第二天
- 传惠普任命新CEO不改变公司战略 股价盘中跌4%
- 为性能和可伸缩性做架构和设计上的Review