Java基础班第三天--继承

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修饰引用类型:地址值不能改变,对象的内容是可以发生改变的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值