黑马程序员--第一阶段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培训、期待与您交流!--------------------
                    详情请查看: http://edu.csdn.net/heima/

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值