Java程序设计-7-继承和接口-课件(PPT演示).pptx
Java程序设计
第七章继承、接口
学习目标
●理解继承的含义以及类的层次关系
●理解抽象类和具体类的区别
●理解多态的含义以及如何实现多态
●理解类型系统
理解接口以及实现接口
●理解接口和抽象的区别
掌握0bject类,掌握主要方法的作用
●理解对象相等性的判断机制
基本概念
继承是自然界的一种普遍现象。作为面向对象技术的实现,Java提供了通过继承创建新类来实现类的重用,在清晰的描述问题域的层次体系时,
继承有着重要的作用。作为系统建模的一种主要原则,理解继承的关键在于能够认识抽象的作用。
本质上接口是一种设计模式,它和继承还有着一定的区别,在开发中它的使用更加频繁。
Figure
汽车火车
RectangleCircle
基本概念
●生活中的层次结构
交通工具
陆上交通工具水上交通工具
生物
植物动物
基本概念
●在Java语言中,所有的类都有着严格的层次体系,除了根类,每个类都有着唯一的超类
Object
InputStreamAbstractCollection
FileInputStream
FilterInputStream
AbstractQueueAbstractListAbstractSet
BufferedInputStream
DataInputStream
AbstractSequentialListArrayListVector
LinkedListStack
在发生继承关系时,一个子类对于超类的继承表
现在以下几个方面:
继承超类的属性
◆继承超类的方法
◆使用超类的构造函数
classChildClassextendsSuperClass{//...
}
继承发生在一个被称为“超类”(基类)与一个被称为“子类”之间,用extends来实现,如:
类的继承
类的继承
●继承超类的属性
一个子类继承超类的属性之后能否使用取决于超类属性的访问属性以及子类和超类所属包的关系
父类
inta
publicintb;
protectedintc;privateintd;
同包的子类
inta
publicintb;
protectedintc;
不同包的子类
publicintb;
protectedintc;
类的继承
·根据继承规则:
◆当超类和子类在同一包中时,子类可以继承(既可以直接使用)超类中除private修饰的一切属性
◆而当超类和子类不在同一个包内时,子类除了超类中用private修饰的属性不能继承外,超类中默认访问权限的属性也不能被继承。
注意:当明确一个类需要作为基类来使用时,考虑清楚每一个数据成员的访问范围是很重要的。
类的继承
●继承超类的方法
◆子类对于超类方法(不包括超类的构造函数)的继承规则和属性继承规则一样。
◆在超类中被说明为private的方法不能被子类继承使用,
◆那些没有说明访问范围的方法,只有当子类和超类在一个包内才可以被继承使用,
◆除此之外,超类的其它方法都可以被子类继承使用。
packagepoints;
publicclassPoint3dextendsPoint{intz;
publicvoidmove(intdx,intdy,intdz){X+=dx;y+=dy;z+=dz;
」
}
importpoints.Point3d;
classPoint4dextendsPoint3d{
intw;
publicvoidmove(intdx,intdy,intdz,intdw){
super.move(dx,dy,dz);w+=dw;
}
}
符
)类的继承与访问修饰符
classPoint{
intx,y;
Point(){reset();}
Point(intx,inty){this.x=X;this.y=y;}
privatevoidreset(){
this.x=0;this.y=0;
System.out.printIn(this.