zoukankan      html  css  js  c++  java
  • 黑马程序员第一阶段3.面向对象第8天

    -------------------- android培训java培训、期待与您交流!--------------------

     

     

    类的继承

    • 继承格式:class 子类名 extends父类名
    • java 只支持单继承,即只能继承一个父类
    • java 支持多层继承,如B继承AC继承B,则C也间接的继承了A
    • 子类继承父类所有的成员变量和成员方法,但不继承父类的构造方法。在子类的构造方法中可使用语句super(参数列表)调用父类的构造方法,如:

    class A

    {

           public String aa=”你好”;

           public int bb=20;

           public A(String aa,int bb)

           {

                  this.aa=aa;

                  this.bb=bb;

           }

    }

    class B

    {

           public String cc=”不好”;

           public B ( String d,int e,String f )

           {

                  super(d,e);

                  this.cc=f;

           }

    }  //如果类B中没有定义构造函数,则系统会自动创建一个无参数的空构造函数,并调用父类的无参构造函数,即public类名(){ super( ) }

     

    • 如果子类的构造方法中没有显式地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则在产生子类的实例对象时,系统默认调用父类无参数的构造方法。 
    • 子类不能继承父类中private类型的成员变量和方法
    • final修饰的类不能当父类

     

    子类对象的实例化过程

    1.         分配成员变量的存储空间并进行默认的初始化,就是用new关键字产生对象后,对类中的成员变量按第三章的表3.1中的对应关系对对象中的成员变量进行初始化赋值。

    2.         绑定构造方法参数,就是new Person(实际参数列表)中所传递进的参数赋值给构造方法中的形式参数变量。

    3.         如有this()调用,则调用相应的重载构造方法(被调用的重载构造方法又从步骤2开始执行这些流程),被调用的重载构造方法的执行流程结束后,回到当前构造方法,当前构造方法直接跳转到步骤6执行

    4.         显式或隐式追溯调用父类的构造方法(一直到Object类为止,Object是所有Java类的最顶层父类,在本章后面部分有详细讲解),父类的构造方法又从步骤2开始对父类执行这些流程,父类的构造方法的执行流程结束后,回到当前构造方法,当前构造方法继续往下执行。

    5.         进行实例变量的显式初始化操作,也就是执行在定义成员变量时就对其进行赋值的语句,如:

    6.         执行当前构造方法的方法体中的程序代码    

    图片 

     

    • super(…)this(…)调用语句不能同时在一个构造函数中出现
    • super(…)this(…)调用语句只能作为构造函数中的第一句出现 

     

    覆盖父类的方法

    方法重写=覆盖

    • 覆盖方法必须和被覆盖方法具有相同的方法名称、参数列表和返回值类型。
    • 如果在子类中想调用父类中的那个被覆盖的方法,我们可以用super.方法的格式。
    • 覆盖方法时,不能使用比父类中被覆盖的方法更严格的访问权限。

     

    final关键字

    • Java中声明类、属性和方法时,可使用关键字final来修饰。
    • final标记的类不能被继承。
    • final标记的方法不能被子类重写。
    • final标记的变量(成员变量或局部变量)即成为常量,只能赋值一次,不能再被改变。
    • 方法中定义的内置类只能访问该方法内的final类型的局部变量,用final定义的局部变量相当于是一个常量,它的生命周期超出方法运行的生命周期,将一个形参定义成final也是可以的,这就限定了我们在方法中修改形式参数的值。
    • public static final共同标记常量时,这个常量就成了全局的常量。
    • final标记的成员变量只能在两个地方被赋值,其他任何地方都不行,代码如下:
        public final int x=6;//在定义时初始化
        public 类名( ){x=50;}//在构造函数中初始化,注意如果有多个构造函数则需要在每一个构造函数中都进行初始化,否则会报错。
    •  static 修饰的成员变量只能在定义时初始化,被static修饰的成员变量在其他类中可以直接调用,即“类名.变量名”这种方法调用,如果没有static修饰,则需要创建该类的实例后才能调用。
    -------------------- android培训java培训、期待与您交流!--------------------
  • 相关阅读:
    OnClick方法与Click事件
    词法,语法,语义
    静态成员与实例成员
    依赖属性 DependencyProperty
    依赖,关联,聚合,合成
    数据可视化
    ref 与out
    理解TCP为什么需要进行三次握手(白话)
    禁止访问网站中所有的动态页面
    linux 重命名文件和文件夹
  • 原文地址:https://www.cnblogs.com/runwind/p/4454758.html
Copyright © 2011-2022 走看看