JAVA继承

网友投稿 660 2022-05-30

继承:定义一个类,让它成为某个类(一般叫父类)的子类,那么它就会继承父类里的部分属性和方法。

因此,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,通过类的继承关系,使公共的特性能够共享,简化了对象、类的创建工作量,增加了代码的可重用性,复用性。

定义语法:

[类修饰符] class 子类名 extends 父类名 { 语句;}

public class Person{     private String name ; //name属性私有化,无法在其他类进行访问或操作,所以不能继承     protected String sex ;     public String getName() {         return name;     }     public void setName(String name) {          this.name = name;     } } //extends关键字作用为一个子类指定父类的实现,即student类继承了Person类。 public class student extends Person {}

1、在Java中,java.lang.Object 类是所有java类的最高层父类,是唯一一个没有父类的类:

如果在类的声明中未使用extends 关键字指明其父类,则默认父类为Object 类。java中的类的继承关系形成了以Object 类为树根的树状层次结构。

2、如果两个类存在继承关系,则子类会自动继承父类的部分方法和变量,在子类中可以对其调用。在java中,只允许单继承,即 一个类只能继承一个父类,但可以拥有多个子类。

(1) 子类继承父类的成员变量

1)能够继承父类的public和protected成员变量;不能够继承父类的private成员变量;

2)对于子类可以继承的父类成员变量,如果在子类中出现了同名称的成员变量,则会发生隐藏现象,即子类的成员变量会屏蔽掉父类的同名成员变量。如果要在子类中访问父类中同名成员变量,需要使用super关键字来进行引用。

public class Person{     protected String sex = "男" ; } //extends关键字作用为一个子类指定父类的实现 public class student extends Person {     protected String sex = "女" ;  //继承Person类,出现同名称成员变量 }

结果显示:(隐藏现象)

若要获取父类的成员变量,则:

public class student extends Person {     private String sex = "女" ; //私有化属性     public String getSex() //创建方法在其他类调用,用super.获取父类成员变量     {return super.sex;} }

(2) 子类继承父类的方法

1)能够继承父类的public和protected成员方法;不能够继承父类的private成员方法;

2)对于子类可以继承的父类成员方法,如果在子类中出现了同名称且同参数的成员方法(又叫子类重写父类的方法),则称为覆盖,即子类的成员方法会覆盖掉父类的同名成员方法。如果要在子类中访问父类中同名成员方法,需要使用super关键字来进行引用。

public class Person{     public void setName() {         System.out.println("父类的方法被调用!");     } } public class student extends Person {     public void setName() {         System.out.println("子类的方法被调用!");     } } public class test {     public static void main(String[] args)     {         student student = new student();         student.setName();     } }

若要获取父类的成员方法,则:

JAVA继承

public class student extends Person {     public void setName() {         super.setName();  // 在同名成员方法中,用super.获取父类的成员方法         System.out.println("子类的方法被调用!");     } }

隐藏和覆盖的区别是:隐藏是针对成员变量和静态方法的,而覆盖是针对普通方法的。

3、子类是不能够继承父类的构造函数的,但是,如果父类的构造函数都是带有参数的,则必须在子类的构造函数中用super关键字调用父类的构造函数并配以适当的参数列表。如果父类有无参构造函数,则在子类的构造函数中,系统会自动调用父类的无参构造函数。

public class Person{     private String name ;     private int age ;     public Person(String name , int age)     {         this.name = name ;         this.age = age ;     }     public String toString() {         return "name=" + name + ", age=" + age + "";     }} public class student extends Person {     public student(String name , int age)     {         super("小明",18);     }}

4、super关键字表示父类,主要有两种用法:

1)super.menber; (用于在子类中调用父类的同名成员变量或者方法)

2)super([args]); (用于调用父类的构造函数,args表示参数,且要在子类构造函数的第一个语句)

Java

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:在AppCube上发布轻应用之调查问卷【AppCube X WeLink双剑合璧】
下一篇:迭代你好,我是冲刺
相关文章