欢迎来到天天文库
浏览记录
ID:48562798
大小:239.00 KB
页数:27页
时间:2020-01-23
《java继承.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第四章继承继承,就是儿子继承父亲,父亲有的儿子也有,而自由的父亲却可能没有。在java中继承是面向对象的一种特性。可以认为他是分层次的一种手段。就像父亲有儿子,儿子有儿子,这样代代延续下去。引入继承可以减少重复的代码量,提高代码和开发的效率。继承继承变量继承方法Super关键字继承中的构造方法重写初始化上溯下溯Final关键字抽象类接口接口和抽象类的区别继承的简单例子classFather{inti=4;publicvoidshow(){System.out.println("父类");}}classSonextendsFather{intj=5;publicvoidget(){System.
2、out.println("子类");}}这里是一个简单的例子,java重的继承是子类继承父类的关系。被继承的类叫做父类或者超类;而继承父类的类叫做子类。如这里的Father叫做超类或者父类,而继承Father类的Son叫做子类。继承Java中的继承是单继承,也就是说一个子类只能有一个超类。同时一个超类却可以有多个子类,而且子类也可以当作下一个子类的超类。父亲儿子孙子1继承继承孙子2继承继承继承语句格式父类ClassFatherName{code}子类ClassSonNameextendsFatherName{soncode}是的这里用extends来表示继承关系。像上面的那几个例子都是这样的。
3、继承继承中成员的访问1.如果父类中变量定义成了private私有变量,则在子类中是不可以调用的,其只能在父类的方法中调用,子类和其他类都不可以。classFather{privateintm=2;}classSonextendsFather{intk=m;}这样编译就通不过,如果把父类中修饰符private去掉,即可。关于类成员的修饰符变量前面和private同性质的修饰符有protected,default(缺省),和public。他们一共有四种。Private修饰的变量只能被本类使用。同一个包中子类同一个包中非子类不同包中的子类不同包中的非子类Public可以可以可以可以protected
4、可以可以可以不可以Default可以可以不可以不可以private不可以不可以不可以不可以继承的super关键字Super关键字,可以用来子类调用父类的成员用,它包括调用父类的public、protectd修饰的变量,方法等等。intsh=i;i是父类中的public变量intsm=super.i;这两种方法在子类中都可以调用父类中变量。inti=i;(这样会显示变量未被初始化)当子类中定义与父类中相同的变量时,会将父类中相应的变量覆盖。因此用super即可完成相应的要求。Inti=super.i;这样就可以了。Super关键字调用父类的方法super.父类的方法(this则是在同各类中调用构
5、造方法也放首句)同时super也可以调用父类的构造方法,但是父类中构造方法用private修饰时,不能有子类去继承。子类可以没有构造方法,他会调用父类的构造方法,如果父类也没有他会调用默认的构造方法。其父类继承object类的构造方法。在子类中可以调用父类的构造方法,super必须放在子类构造方法的的首句。继承将子类引用赋给父类,这有点像上溯,不过上溯将在以后会介绍到。Fatherff=newSon();ff.show();为父类自己的方法错ff.sshow();子类中的方法(这是不可以调用的)子类引用赋给父类后,父类的对象只可以调用父类中自己的变量和方法。上溯和下溯上溯就是将子类对象的引用赋
6、给父类,父类只能调用自己的变量和方法;而下溯则是将父类的引用给子类对象,子类对象可以调用父类和该子类的变量和方法。上溯可以用在抽象类和接口中,这在以后会具体的介绍。范例:Fathera=newSon();a.i;a.show();注意:上溯会失去子类的新增变量和新增方法。就是不能操作他们。但是可以通过在下溯转型后又可以调用子类中新增的变量方法同时也可以调用子类重写的父类方法,这是子类中重写的方法会覆盖父类中的方法。注意:不要将父类创建的对象和子类的上溯转型对象相混。因为父类创建的对象调用的方法,即使是子类中有重写的,他也是调用父类的中原有的方法;但是上溯转型对象则是调用子类中重写的方法,这是两
7、者的区别。下溯下溯是将父类引用给子类。范例:Fatherff=newSon();ff.show();//ff.sshow();Sonss=(Son)newFather();ss.sshow();这样编译通过,但运行时显示不可以转化。既不能将父类对象直接赋值给子类的声明。Fatherff=newSon();ff.show();//ff.sshow();Sonss=(Son)ff;ss.sshow()
此文档下载收益归作者所有