java中类的继承怎样理解,简述什么是继承,java如何实现类的继承
00-1010写在前面1。子类的创建1.1子类的创建方法1.2在父类中调用特定的构造方法2。在子类中访问父类的成员3.1覆盖父类中的方法3.2用父类的对象访问子类的成员4。不可继承成员和最终类实例java代码
00-1010类的继承可以从已有的类中派生出新的类,因此不需要编写重复的代码,提高了代码的可重用性。这是面向对象编程的一个重要特征。继承的类称为父类,继承产生的新类称为子类。一个父类可以通过继承生成多个子类,但与C不同,Java语言不支持多重继承,即不能从多个类派生出一个新类。
子类继承父类的成员变量和方法,修改父类的成员变量或重写父类的成员方法,添加新的成员变量和方法,大大提高了代码的可重用性。
所有类都直接或间接继承自java.lang.Object类。
-分界线-分界线-分界线
目录
00-1010 Java语言中类的继承是通过关键字extends实现的。
如果在继承中没有使用extends关键字,则意味着该类默认继承ava.lang.Object。
子类的每个对象也是父类的对象,所以只要使用父类实例,就允许使用子类实例。
示例:创建一个人类,并创建一个子类Student类,以人类作为父类。(代码放在文末)
Java在调用子类的构造函数之前先调用父类的构造函数。方法不能被继承。
00-1010在Java继承中,程序执行时,子类会调用父类的无参数构造函数进行初始化。但是如果父类中有多个构造函数,就需要在子类的构造函数中使用super()来调用父类中的具体构造函数。
例2: Super()调用父类中的特定构造函数(代码在文末)
如果省略super(),默认情况下将调用父类的无参数构造函数。调用父类构造函数的super()语句必须放在子类构造函数的第一行。Super()可以重载,会根据参数的个数和类型选择调用父类的构造函数。如果在父类中只定义了带参数的构造函数,而在子类中没有使用super()来调用特定于父类的构造函数,那么编译时就会出现错误。-分界线-分界线-分界线
00-1010使用子类中的super()方法,可以访问父类中的特定构造方法,以及父类中的成员变量和成员方法。但是,不能访问子类中添加的成员。
超级棒。变量名
超级棒。方法名称
如果父类成员被声明为私有,则不能在子类中访问它。
写在前面
00-1010覆盖类似于重载,是java多态性的体现。Override是指子类中定义了与父类中相同名称、数量和类型的参数的方法,用于覆盖父类中同名的方法。如果子类中的方法名与父类中的方法名完全相同,则不能被继承。在这种情况下,子类中的方法会覆盖父类中的方法。在父类中声明为final和static的方法不能在子类中重写。当子类重写父类的方法时,可以扩展父类中方法的权限,但不能降低父类中方法的访问权限。
00-1010当子类覆盖父类的成员方法时,父类的对象可以访问子类的成员。你只需要声明父类的变量指向子类的对象。在这种情况下,您可以访问覆盖父类的子类的成员方法,但是不能访问特定于子类的成员方法。
00-1010如果父类中的成员不想被覆盖,可以用final关键字修饰。如果用final修改一个变量,就叫final变量,也就是常量。程序的其他部分可以访问,但不能修改。如果一个成员方法用final修饰,它就不能被子类重写,这个方法就叫final方法。增加了代码的安全性。如果一个类是由final修饰的,它就被称为final类,不能被继承。在类中定义的最终成员变量和在方法中定义的最终局部变量一旦给定就不能修改。它们是只读变量,只能赋值一次。
-分界线-分界线-分界线
如果一个变量同时被final和static修饰,那么它的本质就是一个常量,即static final。而这样的常数只能在定义的时候赋值。如果变量只使用final
修饰而不用static,则只能被赋值一次,不能缺省。
实例java代码
实例1:
//实例1:类的继承,创建个人类Person,在以个人类为父类创建子类学生类Student类。//filename:A_1.javaimport java.io.*;class Person{ private String name; private int age; public Person(){ System.out.println("调用Person类的构造方法"); } public void setNameAge(String name,int age){ this.name=name; this.age=age; } public void show(){ System.out.println("姓名:"+name+"年龄"+age); }}class Student extends Person{ private String department; public Student(){ System.out.println("调用Student类的构造方法"); } public void setDepartment(String department){ this.department=department; System.out.println("我是"+department+"的学生"); }}public class A_1{ public static void main(String[] args){ Student stu=new Student(); stu.setNameAge("张三",18); stu.show(); stu.setDepartment("计算机专业"); } }/**调用Person类的构造方法调用Student类的构造方法姓名:张三年龄18我是计算机专业的学生*/
实例2:
//实例2:super()调用父类中特定的构造方法//filename:A_1.javaimport java.io.*;class Person{ private String name; private int age; public Person(){ System.out.println("调用Person类的无参构造方法"); } public Person(String name,int age){ System.out.println("调用Person类的有参构造方法"); this.name=name; this.age=age; } public void show(){ System.out.println("姓名:"+name+"年龄"+age); }}class Student extends Person{ private String department; public Student(){ System.out.println("调用Student类的无参构造方法"); } public Student(String name,int age,String department){ super(name,age); this.department=department; System.out.println("我是"+department+"的学生"); System.out.println("调用Student类的有参构造方法"); }}public class A_1{ public static void main(String[] args){ Student stu1=new Student(); Student stu2=new Student("张三",18,"计算机专业"); stu1.show(); stu2.show(); }}/**调用Person类的无参构造方法调用Student类的无参构造方法调用Person类的有参构造方法我是计算机专业的学生调用Student类的有参构造方法姓名:null年龄0姓名:张三年龄18*/
到此这篇关于Java超详细讲解类的继承的文章就介绍到这了,更多相关Java类的继承内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。