# java学习阶段一 继承 注解
## 介绍
继承是一种类与类之间的关系
使用已存在的类的定义作为基础建立新类
子类(派生类)继承父类(基类)
子类 可以有自己的新功能 不可以**选择性**的继承父类中的成员
## 基本知识
* 继承的实现
使用extends关键字在类声明部分
```java
class子类 extends 父类{
}//子类的对象可以直接使用父类的属性和方法
-
子类对父类方法的重写
子类继承父类方法为空则默认使用父类方法内容
重写不是改变方法名参数列表 而是对方法内的代码进行重写同时子类无法继承父类构造方法和静态方法
方法的返回值和访问修饰符是可以允许有变化的 但是有条件
- 对于返回值 当父类返回的是一个对象 则子类方法返回的对象没有限制可以是相同父类其他子类的对象
- 对于访问修饰符 子类重写的方法的访问范围是要大于等于父类范围
-
super
子类在调用方法时前面加入此关键字即代表调用的是父类方法和属性
-
加载顺序
程序运行时会先对类进行加载 加载静态成员(先后顺序由代码顺序决定) 对于继承 会先加载父类的静态成员,再是子类
而子类创建对象的时候 会自下而上的查找 构造代码块和构造方法,然后再自上而下的调用构造代码块方法
(子类构造方法会自动默认加一个 super(); 方法默认调用父类无参构造方法 但是可以像构造方法一样后天决定调用谁)
-
Object类(先介绍两个方法)
Object类是所有没有extends继承的类的父类
equals方法,一个对象调用equals方法传入另一个对象作为参数判断两个对象名是否引用到同一个对象
(String类调用equal方法为对比String储存的字符串是否相等 因为在String中已经重写了该方法)
toString方法 转为字符串表现形式
直接打印输出一个对面默认调用toString方法
-
final关键字
修饰类 无法被继承
修饰方法 无法被重写(可以被子类调用)
修饰方法内的局部变量 无法被改变(不要求在定义时赋值)
类的成员变量 同上 但是没在定义是赋值下 之后在构造代码块和构造方法中赋值
修饰引用 不可以改变引向的对象 但指向的对象可以修改属性值
不能修饰构造方法
-
注解简介 一种特殊的标记 对人对编译器
- 按照运行机制分 源码注解 编译注解 运行时注解
- 按照来源分 来着JDK注解 来着第三方注解 自己定义的注解
通过快捷方式在子类快速生成重写模板
在IDEA中@Override或者打一半 即可在跳出的提示中选择父类的方法 点击即生成相关代码
注意事项
1 一个子类只能继承一个父类
2 子类直接访问父类属性和方法只能是非私有(不是指继承哦)
3 父类无法访问子类特有成员
4 方法重写与参数列表名称无关
5 子类可以重写父类的属性
6 子类构造方法显示的调用父类构造方法必须放在子类构造方法第一行
7 this 和super不能在静态方法中使用
8 super和this都只能第一行所以无法两个同时存在第一个方法