首页 > 编程知识 正文

java继承的概念,java子类继承父类

时间:2023-05-05 04:12:06 阅读:114814 作者:990

Java继承(extends )继承是面向Java对象的三大特征之一。 继承与现实生活中“继承”的相似之处在于保留了细鱼的特性,减少了代码冗馀,提高了程序的执行效率。

Java中的继承是指根据已经存在的类进行扩展,生成新类。 继承的类称为父类、基类或超类,生成的新类称为子类或派生类。 子类不仅可以定义父类的非专用属性和方法,还可以定义自己的属性和方法。

Java的子类继承父类的语法格式。

修饰符classclass_nameextendsextend _ class {//类的主体}其中class _ name表示子类(派生类)的名称; extend_class表示父类(基类)的名称。 extends关键字后跟子类名称,后跟该类继承的父类的名称。 例如:

publicclasstudentextendsperson { } Java的继承通过extends关键字实现,extends的英语含义是扩展,子类与父类之间的关系,即子类继承和扩展父类的功能

类继承不会更改类成员的访问权限。 也就是说,如果父类的成员是公共类、受保护类或缺省类,则该子类具有这些特性,子类无法继承如何构建父类。

/师生都是人,他们有共同的属性。 姓名、年龄、性别和身份证号码。 另外,学生具有学号和专业两个属性,教师具有教龄和教育专业两个属性。 在下面,我们将编写Java程序代码,以确保教师(Teacher )和学生(lass )类都由人类(gramp )类继承。 具体实施步骤如下。

1 .创建人员并定义名称、age、sex和sn属性。 代码如下。

blicclasspeople {公共字符串名称; //名称公共int age; //年龄公共字符串sex; //性别公共字符串sn; //身份证号码publicpeople(stringname,int age,String sex,String sn ) { this.name=name; this.age=age; this.sex=sex; this.sn=sn; }publicstringtostring(((return )姓名) name(n年龄) age )n性别) sex )n身份证号码) sn; }正如上面的代码所示,People类包含四个公共属性、一个构造方法和一个toString ()方法。

创建Student类(People类的子类),然后定义stuNo和department属性,如下所示:

publicclassstudentextendspeople { privatestring stuno; //学号private String department; //学过的专业公共student (字符串名称,int age,String sex,String sn,String stuno,String department ) super ) name,age,String sn }publicstringtostring(((return )姓名) name ((n年龄) age ) ) n性别) sex (((n身份证号码(sn )n学校号码) stuno ) ) n所学专业} 在此处,我们将重写父类的toString ()方法。

注意:如果父类中存在没有参数的构造函数,并且没有重载没有参数的构造函数,则name必须在子类中包含具有参数的构造函数。 如果子类没有构造函数,则缺省情况下调用父类中没有参数的构造函数,并且父类中没有没有无参数的构造函数,从而导致错误。

创建People类的另一个子类Teacher,并定义tYear和tDept的属性,如下所示:

publicclassteacherextendspeople { privateinttyear; //教龄隐私字符串t深度; //使用专业的公共技术(string name、int age、String sex、String sn、int tYear、String tDept ) super ) name、age、sex、sn

= tDept; } public String toString() { return "姓名:" + name + "n年龄:" + age + "n性别:" + sex + "n身份证号:" + sn + "n教龄:" + tYear + "n所教专业:" + tDept; }}

Teacher类与Student类相似,同样重写了父类中的toString()方法。

4.编写测试类PeopleTest,在该类中创建People类的不同对象,并分别调用它们的toString()方法,输出不同的信息。具体的代码如下:

public class PeopleTest { public static void main(String[] args) { // 创建Student类对象 People stuPeople = new Student("王丽丽", 23, "女", "610100000000000000", "00001", "计算机应用与技术"); System.out.println("----------------学生信息---------------------"); System.out.println(stuPeople); // 创建Teacher类对象 People teaPeople = new Teacher("英勇的银耳汤, 30, "男", "6101111111111111111", 5, "计算机应用与技术"); System.out.println("----------------教师信息----------------------"); System.out.println(teaPeople); }}

运行程序,输出结果如下:

----------------学生信息---------------------姓名:王丽丽年龄:23性别:女身份证号:610100000000000000学号:00001所学专业:计算机应用与技术----------------教师信息----------------------姓名:htdyet年龄:30性别:男身份证号:6101111111111111111教龄:5所教专业:计算机应用与技术 单继承

Java语言摒弃了C++中难以理解的多继承机制,即Java中的类不支持多继承,只允许一个类直接继承另一个类,即子类只能有一个直接父类,extends关键字后面只能有一个类名。例如,下面代码会导致编译错误:

class Student extends Person,Person1,Person2{…}class Student extends Person,extends Person1,extends Person2{…}

很多地方在介绍Java单继承时,可能会说Java类只能有一个父类,严格来讲,这种说法时错误的,应该是一个类只能有一个直接父类,但是它可以有多个间接的父类。例如,Student类继承Person类,Person 类继承 Person1 类,Person1 类继承 Person2 类,那么 Person1 和 Person2 类是 Student 类的间接父类。下图展示了单继承的关系。

从图中可以看出,三角形,四边形和五边形的直接父类是多边形,它们的间接父类是图形类。图形类,多边形类和三角形,四边形,五边形类形成了一个继承的分支。在这个分支上,位于下层的子类会继承上层所有直接或者间接父类的属性和方法。如果两个类不在同一个继承分支上,就不存在继承关系,例如图中的多边形类和直线。

如果定义一个Java类时,没有显示地指出这个类的直接父类,则这个类默认继承java.lang.Object类。因此,java.lang.Object类是所有类的父类,要么是其直接父类,要么是其间接父类。因此所有的Java对象都可以调用java.lang.Object类所定义的实例方法。

使用继承时的注意点:

1.子类一般比父类包含更多的属性和方法。

2.父类的private成员在子类中时不可见得,因此在子类中不能直接使用它们。

3.父类和子类间一般存在“is-a”的关系。

4.关于Java的单继承,Java的类只允许单继承(即一个子类只能有一个直接父类),而Java的接口允许多继承(即一个接口可以同时继承多个接口)。

在面向对象语言中,继承是一种必不可少,非常优秀的语言机制,它有如下优点:

1.实现代码共享,减少创建类的工作量。

2.提高代码的可维护性和可重用性。

于Java的单继承,Java的类只允许单继承(即一个子类只能有一个直接父类),而Java的接口允许多继承(即一个接口可以同时继承多个接口)。

在面向对象语言中,继承是一种必不可少,非常优秀的语言机制,它有如下优点:

1.实现代码共享,减少创建类的工作量。

2.提高代码的可维护性和可重用性。

3.提高代码的可扩展性。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。