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修饰引用类型:地址值不能改变,对象的内容是可以发生改变的
继承的好处:
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修饰引用类型:地址值不能改变,对象的内容是可以发生改变的
相关文章推荐
- java 继承的基础
- java基础教程-继承
- Java 基础(三) 继承 多态 -------面向对象的特殊性能
- Java语言基础--继承
- java基础4--面向对象(下)(继承、final关键字)
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- java学习 java 的继承机制 暑假第三天
- java学习 java 的继承机制 暑假第三天
- 黑马程序员——第三天(Java基础语法2)
- java继承的基础
- java 基础 类的继承
- java基础-----访问权限,继承,super
- 基础的Java继承
- java基础回顾---封装继承多态
- java基础 ---继承和多态
- 编程需要注意陷阱:Java继承是有害的-Java基础-Java-编程开发
- Java基础:第三十六讲 成员变量的继承与覆盖
- 菜鸟学Java第三天 关于继承及其他
- Java 基础一些代码练习笔记(继承+接口+多态)
- JAVA程序员必读:基础篇(5)---类和继承