Java继承
目录
一、继承知识点
1、继承介绍:
生活中的继承:
孩子继承爸妈的特征;徒弟继承师傅的手艺;富二代继承家产等
程序中的继承:抽取公共的组成父类,封装私有的构成子类
2、继承特点:
- 利于代码复用
- 缩短开发周期
3、继承
- 一种类与类之间的关系
- 使用已存在的类的定义作为基础建立新类
- 新类的定义可以增加新的功能和数据,也可以使用父类的功能,但不能选择性的继承父类
- 父类也叫基类或超类;子类也叫派生类
4、继承关系
- 满足“什么是什么(A is B)”的关系就可以形成继承关系。如
- 猫和狗是动物,猫类和狗类继承动物类
- 老师和学生是人,老师和学生继承人类
- 轿车和卡车是车,轿车和卡车继承车类
5、实现继承
二、方法重写和方法重载的对比
1、访问修饰符的限定范围:
- private:私有的
- 默认:不带访问修饰符
- protected:受保护的
- public:公有的
- 范围表:
2、方法重写要点:
- 在满足继承关系的子类中(子类中重写父类方法)
- 方法名,返回值可以是子类类型,参数类型、个数、顺序都要与父类需要重写的方法相同(保持不变)
- 子类中重写的方法访问修饰符的限定大于或等于父类的访问修饰符(修饰符范围应该扩大)
- 注意:方法重写存在,但属性重写不存在
3、方法重载要点:
- 在同一个类中
- 方法名相公,但参数和参数(类型、个数、顺序)不同
- 和返回值和修饰符无关’
三、super关键字和this关键字
1、super关键字:子类访问父类成员方法、属性和构造方法
- 子类访问父类属性:super.name;(super点属性)
- 子类访问父类方法:super.eat();(super点方法名)
- 子类访问父类构造方法:super.Cat(可带参数);
- 不能访问静态成员和方法
- 构造方法调用时this和super不能同时出现
2、this关键字:表示当前对象
- 访问当前类的属性:this.name;
- 访问当前类的方法:this.eat();
- 访问当前类的构造方法:this();
- 不能访问静态成员和方法
- 构造方法调用时this和super不能同时出现
3、实例化顺序:父类静态成员——>子类静态成员——>父类对象构造(属性(赋值)、构造代码块、构造方法)——>子类对象构造(属性(赋值)、构造代码块、构造方法)
4、super补充:
- 子类的构造过程中必须调用父类的构造方法
- 如果子类的构造方法中没有显示调用父类的构造方法时,系统默认调用父类的无参构造方法
- 如果子类的构造方法中没有显示调用父类的构造方法并且父类又没有无参构造时,则编译出错
- 使用super()调用父类构造方法时,必须位于子类构造方法的第一行
四、object类
1、object类
- object类是所有类的父类
- 一个类没有使用extends关键字注明继承类,则默认继承Object类(包括数组)
- Java中的每个类都可以使用Object类中的方法
2、Object类中的常用方法
五、final关键字
1、final修饰类表示这个类不可以被继承。public final Class Cat{}或者final public Class Cat{}
2、final修饰方法表示这个方法不允许被子类重写,但是可以被继承。public void final eat(){}或者final public void eat(){}
3、修饰变量表示这个变量不可以被修改。
- 修饰方法内部的局部变量,只要在使用之前赋值即可。final int temp=0;
- 修饰成员变量,只能在定义时、构造代码块中和构造函数中赋值。private String name="小猫";
- 基本数据类型的变量,初始赋值后不能更改。final Cat cat=new Cat();
- 引用类型的变量初始后不能再指向另一个对象,但指向的对象的内容是可变的
4、补充:
- 可配合static使用。
- 使用final可以提高性能,但是降低了可扩展性。
- final不能修饰构造方法
六、注解
1、注解
- JDK1.5版本引入的一个特性
- 可以声明在包、类、属性、方法、局部变量、方法参数等的前面,用来对这些元素进行说明和注释
2、注解的分类
按运行机制分:
源码注解(在源码中起作用)——编译时注解(起作用到编译)——运行时注解(起作用到运行)
按来源分:
JDK注解——来自第三发的注解——自定义注解