JAVA基础(十一)继承

继承

自己理解

                     类与类单继承,

                       获得父类的功能,强大自己,只能单向继承,class子类extends父类;

            重写:当子类需要父类的功能,当子类特有的功能与父类有元素或方法重名时,子类要继承父类的元素,就需要super.

          父类中的成员变量或者方法名.在main中调用子类也会获得父类的元素或者方法

当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容。

继承:

关键字   extends

定义:继承 就是让类与类之间产生关系-->父子关系

格式:class 类名1 extends 类名2{

            

             }

类名1 继承于 类名2

类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法

继承的好处和弊端:

好处:

       1.提高了代码的复用性

          2.提高了代码的维护性

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

弊端:  

              1.类的耦合性增强了

java中类的继承特点:

             .java中类只支持单继承 不支持多继承

              .java支持多层继承(继承体系)

              .一个父类 可以有多个子类

注意事项:

               1.不能因为部分共性的内容 而盲目继承

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

                 3.父类的构造方法 不能被子类继承 但是可以通过super()进行调用

                 4. 子类在继承父类的时候,会自动拥有父类的成员。

                5.一个类只能继承一个父类

                 6.一个父类可以被多个子类继承。

多层继承:      

             在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类

               例如C类继承自B类,而B类又可以去继承A类,这时,C类也可称作A类的子类。下面这种情况是允许的。

         class A{}

         class B extends A{}   // 类B继承类A,类B是类A的子类

        class C extends B{}   // 类C继承类B,类C是类B的子类,同时也是类A的子类

继承-子父类中成员变量的特点以及重写

在子类中,访问父类中的成员变量格式:

                     super.父类中的成员变量

                      super只能写在子类里面

                      main方法调子类,同时也能获得父类属性

 

建父类

public class Fu {

 int i=1;

         public void eat() {

         //重写

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

         }

}

 

键子类 关联父类

// 继承父类

public class Zi extends Fu{
      //成员变量
     int i=2;
     public void show () {
//局部变量
int i=3; // System.out.println(i);//结果为3 就近元素 结果为3 //System.out.println(this.i); //结果为2 this指本类,结果为2 //System.out.println(super.i)//结果为1 父类 //子父类中出现了同名的成员变量时 //在子类中需要访问父类中非私有成员变量时,需要使用super关键字 //访问父类中的i } //重写父类功能 public void eat() { super.eat();//获得父类的功能 System.out.println("xix"); } }

 

测试

//在继承中

/* 子类和父类出现重名成员变量时  如果子类有,调子类的;
                                                                                                             如果子类没有,调父类的;*/

public class demo01 {

  public static void main(String[] args) {

     Zi z = new Zi();//创建子类对象

     System.out.println(z.i);// 结果为2 就近原则

//重写   调子类方法

     z.eat();

/*子类有eat方法

父类有eat方法

l  子父类中成员方法的特点

当在程序中通过对象调用方法时,会先在子类中查找有没有对应的方法,若子类中存在就会执行子类中的方法
,若子类中不存在就会执行父类中相应的方法。 l 成员方法特殊情况——覆盖 子类中出现与父类一模一样的方法时,会出现覆盖操作,也称为override重写、复写或者覆盖。 为了能够同时获得子类父类的方法(功能),就需要子类继承父类的功能super.eat();//获得父类的功能
*/ } }

 

posted @ 2019-08-02 08:31  腊月出去玩  阅读(185)  评论(0编辑  收藏  举报