java什么是继承性,请简述java中继承的概念以及使用继承的好处
00-1010重写继承的概念方法;使用super关键字的超级调用构造函数概要
00-1010继承是指子类继承了父类的特征和行为,这样子类对象(实例)就拥有了父类的实例域和方法,或者子类继承了父类的方法,这样子类就拥有了与父类相同的行为。
继承可以快速创建新类,实现代码重用,提高程序可维护性,节省大量创建新类的时间,提高开发效率和质量。
继承的好处:
减少代码重复,提高代码可重用性,方便功能扩展和继承格式:A类扩展B{}
答:子类、派生类、子类、B:父类、超类、基类、超类
体现:一旦子类A继承了父类B,子类A就获得了父类B中声明的所有属性和方法,尤其是父类中声明为私有的属性或方法,子类继承父类后,仍然认为自己获得了父类中的私有结构,只是因为封装效应,使得子类无法直接调用父类的结构。
子类继承父类后,还可以声明自己独有的属性或方法:函数的扩展。然而,一个父类可以有多个子类。在java中,类的单一继承:一个类只能有一个父类,子父类是一个相对的概念。子类直接继承的父类称为:直接父类,间接继承的父类称为:间接父类。子类继承父类后,它获得直接父类和所有间接父类中声明的属性和方法。
如果我们没有声明一个类的父类,这个类继承自java.lang.Object类,它是所有java类的根父类。
继承中需要注意的几点:
1.子类不能选择性地继承父类;
2.Java不支持多重继承,但是一个类可以实现多个接口,克服了单一继承的缺点;
3.构造函数不会被子类继承,但是父类的构造函数可以从子类中调用。
例如
Class teacher{ //声明一个教师类作为父类字符串名称;//定义父类的成员变量name和age int ageVoid show(){ //定义父类成员方法,将成员变量输出到system . out . println(name);System.out.println(年龄);} } Class Student Extensions Teacher {//将学生类声明为子类并继承父类} Public Class my first { Public static void main(string[]args){ system . out . println( Student );学生学生=新生();//声明学生类studentstudent.name= Tom 的实例对象;//子类调用父类的成员变量名,赋值student.age=19//子类调用父类的成员变量age并赋值student . show();//子类调用父类的成员方法show}}
00-1010在实际应用中,我们写的子类和父类的函数是不一样的,所以需要重写或者隐藏父类的方法。
1.覆盖:子类继承父类后,它可以覆盖父类中具有相同名称和参数的方法。
2.应用:重写后,在创建子类对象,并通过子类对象调用子父类中相同名称和参数的方法时,实际执行的是子类重写父类的方法。
3重写条款:
方法声明:
权限修饰符返回值类型方法名(参数列表)
子类中被重写方法和父类中被重写方法的方法名和参数列表与父类中被重写方法的方法名和参数列表相同,并且子类中被重写方法的权限修饰符不小于父类中被重写方法的权限修饰符。特殊情况:子类不能重写在父类中声明为私有权限的方法。
关于返回值类型:
如果父类被重写的方法的返回值类型是void,那么子类被重写的方法的返回值类型只能是void;如果父类被重写的方法的返回值类型是A,则子类被重写的方法的返回值类型可以是A类或A类的子类。
如果父类为ov的方法的返回值类型
子类和父类中具有相同名称参数的方法必须声明为非静态的才能被重写,静态的方法不会被重写。
例如
A类{public void sayHello() {//输出英文welcome system.out.println(您好,欢迎使用Java!);} public void say bye(){ system . out . println(再见,e
veryone");}}class B extends A { public void sayHello() { //输出中文欢迎 System.out.println("大家好,欢迎学习Java!!!"); }}public class myfirst {public static void main(String[] args) {B b=new B(); //创建子类B的一个实例对象,使用默认构造方法b.sayHello(); //调用子类中重写的方法b.sayBye(); //调用父类中的方法}}
super关键字的使用
super理解为:父类的,super可以用来调用、属性、方法、构造器
super的使用,我们可以在子类的方法或构造器中。通过使用super.属性或super.方法的方式,显式的调用父类中声明的属性或方法,但是,通常情况下,我们习惯省略super.
特殊情况:当子类和父类中定义了同名的属性时,我们要想在子类中调用父类中声明的属性,则必须显示的使用super.属性的方式,表明调用的是父类中声明的属性。当子类重写了父类中的方法之后,我们想在子类中的方法中调用父类中被重写的方法时,则必须显式的使用super.方法的方式,表明调用的是父类中被重写的方法。
super调用构造器
我们可以在子类的构造器中显式的使用super(形参列表)的方式,调用父类中声明的指定的构造器,"super(形参列表)"的使用,必须声明在子类构造器的首行,我们在类的构造器中,针对于this(形参列表)"或super(形参列表)只能二选一,不能同时出现,在构造器的首行,没有显式的声明this(形参列表)或super(形参列表),调用父类中的构造器
例如
package first;class A{ public String name="张飞"; //添加成员变量public void say() { //添加成员方法saySystem.out.println("我是父类A成员方法say");}}class B extends A{ public String name="关羽"; //与父类中同名的字段,隐藏父类public void say(){ //重写方法saysuper.say(); //使用super关键字调用父类中的方法System.out.println("我是子类B成员方法say"); System.out.println("父类的name名字:"+super.name); //使用super关键字访问父类中的变量}}public class myfirst {public static void main(String[] args) { B b=new B(); //创建子类的一个实例对象 b.say(); //调用子类中重写的方法 System.out.println("子类的name名字:"+b.name); //调用子类中的name}}
总结
今天学习了java中继承的特性,方法的重写,以及super关键字的使用。
到此这篇关于Java超详细讲解三大特性之一的继承的文章就介绍到这了,更多相关Java继承内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。