zoukankan      html  css  js  c++  java
  • 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();//获得父类的功能
    */ } }
  • 相关阅读:
    Java斗地主--001版本
    集合----方法的可变参数
    浅谈--Java编译期异常+运行期异常
    JavaSE编程基础(一)
    JavaSE编程基础(三)
    JavaSE编程基础(二)
    软件测试(三十)
    软件测试(二十九)
    软件测试(二十七)
    软件测试(二十八)
  • 原文地址:https://www.cnblogs.com/layuechuquwan/p/11286471.html
Copyright © 2011-2022 走看看