您的位置:首页 > 编程语言 > Java开发

Java基础班第三天--继承

2015-03-16 10:45 211 查看
1. java是怎么描述继承的呢? class NewClass extends OldClass

继承的好处: 

1)提高了代码的复用性

2)让类与类产生了一个关系,这个关系是多态的前提

 继承其实体现了一种关系,xxx is a yyy一种

 

2. 子父类的成员变量关系:就近原则
   如果子类要想使用父类的东西,可以通过一个关键字super去调用。

   你可以理解为父类的对象引用,因为super代表的其实是父类的存储空间

   首先在局部范围找,之后找成员位置,再之后找父类成员位置。。。

   num--局部范围  this.num--对象范围   super.num--父类对象范围
  
3. 子父类的构造方法关系:构造方法是不被继承的
   在执行子类的构造方法前,会先执行父类的构造方法 调用构造方法时,首先要对成员变量进行赋初始值!!

   在执行子类的构造方法的时候,并没有创建父类的对象,调用父类构造仅仅是对父类进行了数据的初始化

   注意: 

   1)在子类的构造方法中,默认第一条语句是super()

   2)在构造方法中,this()和super()只会有一个存在,并且都应该是在第一条语句

   super()放第一,是因为子类要访问父类的数据,所以父类要先被初始化

   this()放第一,是因为如果this()放后面,那么,我们对父亲的初始化就执行了多次

   任何类都直接或者间接的继承自object类
  
4. 子父类间的成员方法关系:
   当子类中有和父类一模一样的方法的时候,子类使用的是自己的

   这种现象被称为方法的重写

   方法的重写:

   方法名必须相同,参数列表必须相同,返回值类型可以不同

   引用类型的时候,子类的返回值类型是父类或者是父类返回值类型的子类

   推荐:修饰符,返回值类型,方法名,参数列表都相同

   注意:

   1)子类的访问权限一定要小于等于父类

   2)私有方法是不能被重写的

   3)静态方法只能被静态方法重写
  
5. 子类在实例化的时候,会首先调用父类的构造方法
   在子类的构造方法中,默认第一条语句是super 是表示要初始化父类,并不是说初始是从这里开始的

  

   假如父类并没有提供无参构造方法,这个时候,代码就会报错 请问如何解决

   1)使用super(...)调用父类带参的构造方法

   2)使用this(...)调用本类的其他构造方法,本类的其他构造方法再调用父类的方法
 
6. 一个类的初始化
1)把class文件加载到内存

2)在栈内存开辟p变量空间

3)在堆内存开辟new person()空间

4)对成员变量默认初始化

5)对成员变量显式初始化

6)走构造方法对成员变量初始化(如果有构造代码块,先走构造代码)

7)构造完毕,把地址复制给p变量

7. 具有继承关系的初始化:分层初始化
   先初始化父类,再初始化子类

   不管初始化谁,都是按照一个类的初始化执行的
  
8. final关键字 可以修饰类,成员变量,成员方法
    特点:

 1)它修饰的方法不能被重写

 2)它修饰的成员变量(基本数据类型)是一个常量

 3)它修饰的类无法被继承,是最终类
 
 1)final修饰的变量一般在定义的时候就赋值了,那么,有没有可能在其他情况下赋值?

 有。在构造方法完毕前都行

 2)final修饰基本类型和引用类型

  final修饰基本类型:值不能改变

  final修饰引用类型:地址值不能改变,对象的内容是可以发生改变的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: