欢迎来到天天文库
浏览记录
ID:48754331
大小:357.50 KB
页数:55页
时间:2020-01-21
《第4章 类的继承和接口的扩展.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第四章类的继承和接口的扩展本章结构类的继承多级继承重写类方法final的使用和抽象类Object类接口包本章小结思考题类的继承继承是面向对象编程技术的一块基石,它允许程序员按照一定的层次结构创建类在Java中,被继承的类叫超类(superclass),继承超类的类叫子类(subclass)子类拥有超类定义的所有实例变量和方法,但当超类中的成员变量或方法被定义成private时,子类就不能直接访问基类的方法在子类中可以被重写。如果子类没有重写基类的方法,那子类就可以直接调用基类的方法4.1.1创建子类继承是一种由已有的
2、类创建新类的机制。利用继承,我们可以先创建一个拥有共同属性的一般类,根据该一般类再创建具有特殊属性的新类。由继承而得到的类称为子类(subclass),被继承的类称为父类(或叫超类,superclass)。直接或间接被继承的类都是父类。子类继承父类的状态和行为,同时也可以修改父类的状态或重写父类的行为,并添加新的状态和行为。Java中不支多重继承。4.1.1创建子类通过在类的声明中加入extends子句来创建一个类的子类,其格式如下:classSubClassextendsSuperClass{……}上面的代码把Su
3、bClass声明为SuperClass的直接子类。如果SuperClass又是某个类的子类,则SubClass同时也是该类的(间接)子类。子类可以继承父类的成员变量和方法。如果缺省extends子句,则该类为java.lang.Object的子类。子类可以继承父类中访问权限设定为public、protected、default的成员变量和方法。但是不能继承访问权限为private的成员变量和方法。4.1.1创建子类4.1.1创建子类4.1.1创建子类注意,MammalClass类拥有来自于DogClass和CatCl
4、ass的相同属性,包括了name、eyeColor、age等。现在我们可以利用继承重写DogClass和CatClass。publicclassDogClassextendsMammalClass{booleanhasTail;//name,eyeColor,age已经从父类继承publicDogClass(){//隐式调用super()name="Chase";eyeColor="Black";age=2;hasTail=true;}}4.1.1创建子类【例4-1】继承的简单例子classFather{//父类pr
5、ivateintmoney;floatweight,height;Stringhead;Stringspeak(Strings){returns;}}classSonextendsFather{//子类Stringhand,foot;}Weight,height,head,Speak();Hand,foot5.1.1创建子类【例4-1】继承的简单例子publicclassTestExtend{publicstaticvoidmain(Stringargs[]){Sonboy=newSon();boy.weight=1
6、20f;boy.height=1.8f;boy.head="一个头";boy.hand="两只手";boy.foot="两只脚";System.out.println("我是儿子");System.out.println("我有:"+boy.hand+"、"+boy.foot+"、"+boy.head+"、重"+boy.weight+"、高"+boy.height);}}上面程序运行结果如下:我是儿子我有:两只手、两只脚、一个头、重120.0、高1.84.1.1创建子类如果子类和父类不在同一个包中,那么,子类可以继承
7、了父类的protected、public修饰的成员变量做为子类的成员变量,并且也可以继承了父类的protected、public修饰的方法作为子类的方法。另外子类和父类不在同一个包中,则子类不能继承父类的default变量和default方法。4.1.1创建子类【例4-2】继承不同包中的类的简单例子//HouseHold.javapackagexing.house;publicclassHouseHold{//家类protectedStringaddress;//地址publicStringsurnname;//姓S
8、tringgivenname;//名publicHouseHold(Stringadd){address=add;}protectedStringgetAddress(){returnaddress;}voidsetMoney(Stringnewadd){address=newadd;}voidsetAddress(Stringadd){add
此文档下载收益归作者所有