大数据java基础5

大数据java基础51 继承 extends 也叫扩展 引入 首先写两个类 定义学生类 class Student 成员变量 private String name private int age 空构造 public Student getXxx setXxx public void eat System out println 吃饭

大家好,我是讯享网,很高兴认识大家。



1.继承extends(也叫扩展)

引入

首先写两个类:

    //定义学生类

    class Student {

       //成员变量

       private String name;

       private int age;

       //空构造

       public Student(){}

      

       //getXxx()/setXxx()

   

       public void eat() {

           System.out.println("吃饭");

       }

    }

//定义教师类

    class Teacher {

       //成员变量

       private String name;

       private int age;

       //空构造

       public Teacher(){}

      

       //getXxx()/setXxx()

      

       public void eat() {

           System.out.println("吃饭");

       }

    }

2.继承概述

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。

通过extends关键字可以实现类与类的继承,继承的格式如下:

    class 子类名 extends 父类名 {}

单独的这个类,也就是被继承的类,称为父类,基类或者超类;这多个类称为子类或者派生类。

有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员。

3.继承的案例和继承的好处

通过一个具体案例来演示代码

案例1:学生类和教师,定义两个功能(吃饭,睡觉)

案例2:加入人类后改进

/*

    继承概述:

       把多个类中相同的内容给提取出来定义到一个类中。

    格式:

       class 子类名 extends 父类名 {}

    好处:

       A:提高了代码的复用性

       B:提高了代码的维护性

       C:让类与类之间产生了关系,是多态的前提

*/

//使用继承前

/*

class Student {

    public void eat() {

       System.out.println("吃饭");

    }

    public void sleep() {

       System.out.println("睡觉");

    }

}

4.继承的好处

提高了代码的复用性

   多个类相同的成员可以放到同一个类中

提高了代码的维护性

   如果功能的代码需要修改,修改一处即可,继承的类中自动都被修改了

让类与类之间产生了关系,是多态的前提

5.Java中继承的特点

  • Java只支持单继承,不支持多继承。

    即:一个类只能有一个直接父类,不可以有多个直接父类。

    class SubDemo extends Demo{}           //ok

    class SubDemo extends Demo1,Demo2.https://www.cnblogs.com/xiejiajun//error不能继承多个类

  • Java支持多层继承(继承体系)

    class A{}

    class B extends A{}

    class C extends B{}

6.Java中继承的注意事项

子类只能继承父类所有非私有的成员(成员方法和成员变量)

子类不能继承父类的构造方法,但是可以通过super(后面讲)关键字去访问父类构造方法。

不要为了部分功能而去继承

我们到底在什么时候使用继承呢?

继承中类之间体现的是:"is a"的关系。

7.继承中成员变量的关系

案例演示

子父类中同名和不同名的成员变量

子类方法中寻找变量的顺序

类的组成:

       成员变量:

       构造方法:

       成员方法:

    而现在我们又讲解了继承,所以,我们就应该来考虑一下,类的组成部分的各自关系。

    继承中成员变量的关系:

       A:子类中的成员变量和父类中的成员变量名称不一样,这个太简单。

       B:子类中的成员变量和父类中的成员变量名称一样,这会出现什么情况呢?

           大数据java基础5 在子类方法中访问一个变量的查找顺序:

           a:在子类方法的局部范围找,有就使用

           b:在子类的成员范围找,有就使用

           c:在父类的成员范围找,有就使用

           d:如果还找不到,就报错。

8.结论

在子类方法中访问一个变量

首先在子类局部范围找,也就是方法内部

然后在子类成员范围找,也就是子类的成员变量

最后在父类成员变量范围找(肯定不能访问到父类局部范围)

如果还是没有就报错。

9.super关键字

super的用法和this很像

this   代表本类对象的引用

super 代表父类存储空间的标识(可以理解为父类对象的引用)

用法(this和super均可如下使用)

  • 访问成员变量

this.成员变量

    super.成员变量(访问父类的成员变量,不能访问父类的private变量)

    访问静态成员时,也可以用:父类名.静态成员

  • 访问构造方法(子父类的构造方法问题再讲)

this(…)       super(…)          //

  • 访问成员方法(子父类的成员方法问题再讲)

   this.成员方法()   super.成员方法()

10.问题是:

       我不仅仅要输出局部范围的num,还要输出本类成员范围的num。怎么办呢?

       我还想要输出父类成员范围的num。怎么办呢?

           如果有一个东西和this相似,但是可以直接访问父类的数据就好了。

           恭喜你,这个关键字是存在的:super。

    this和super的区别?

           this代表本类对应的引用。

           super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)

           A:调用成员变量

              this.成员变量 调用本类的成员变量

              super.成员变量 调用父类的成员变量

           B:调用构造方法

              this(...) 调用本类的构造方法

              super(...) 调用父类的构造方法

           C:调用成员方法

              this.成员方法 调用本类的成员方法

小讯
上一篇 2024-12-28 16:51
下一篇 2024-12-25 10:48

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/8747.html