继承
继承的格式:public class Student extends People()
父类:子类的共性抽取而来
继承的好处,子类可以直接使用父类成员,提高代码复用性与可维护性
继承的弊端,使类与类之间产生关联,增强其之间的耦合性,父类变化时子类不得不跟着变化
类与类之间具有is a的关系时,适合使用继承,比如猫是动物
继承的特点,Java中类只支持单继承,不支持多继承,但支持多层继承,父类的private成员,子类不能直接访问
访问特点,就近原则,但不考虑父类的父类
构造器访问特点,子类每个构造都会先调用父类构造,再执行自己
调用父类构造有三种方式:
- 默认,调用父类空参构造super();//不写也有,构造方法第一行
- 如果父类只有带参构造,没有空参构造,super(参数列表);
- this(参数列表)
super关键字
this关键字,代表调用该方法的当前对象
super,代表父类存储空间的标识(可以理解为父类对象引用)
有同名成员变量及方法时,默认访问子类,要访问父类用super.成员变量名/super.方法名()
方法重写
子类出现与父类一模一样的方法声明
子类需要父类的功能,但父类功能不能完全满足需求,需要子类有自己的特有内容时,重写父类方法,这样既沿袭父类功能又可以定义自己的内容
@override,是jdk提供的注解,用来修饰方法,可以检查子类方法重写的格式
注意事项,父类私有方法不能重写,子类重写父类,访问权限要大于等于父类方法访问权限(一般权限一样)
权限修饰符
概述,用来控制一个成员能够被访问的范围,可以修饰成员变量,方法,构造器,内部类,不同修饰符的限制范围不一样
作用范围:
private:同一类中
缺省(什么都不写):同类,同一包中其他类
protected:包中,不同包下子类
public:范围最广,不同包无关类也能访问
static关键字
概述,一个关键字,静态的意思,可以修饰成员方法,成员变量
被static修饰的特点:
被修饰变量称为静态变量,被该类所有对象共享
被修饰方法叫静态方法,可以通过类名直接调用
静态变量(类变量)和类方法(静态方法),除了可以创建对象调用,还可以通过类名.方法名直接调用
静态成员随类的加载而加载,非静态成员必须创建对象才存在
注意事项:
- 共享的东西适合使用静态修饰
- 修饰方法的好处,可以直接用类名调用
- static方法只能访问static成员(包括静态成员和静态方法),static方法内不能使用this
static应用的场景,一般是工具类,对于一些经常需要使用的功能,用静态方法封装,放在一个类里,就是工具类.工具类调用方便,能提高代码复用,建议将工具类的构造器私有,不让工具类对外产生对象.工具类举例,Math,Array
包package
本质是文件夹,作用是对类文件进行分类管理,防止类重名.
域名反写.项目名.模块名.功能分类
声明格式:package 包名;
导包: import 包名.类名/*;
final关键字
可以修饰方法,变量,类:
修饰类:最终类,不能被继承
修饰方法:最终方法,不能被重写
修饰变量:是常量,只能赋值一次
修饰的变量是基本类型,变量储存的数据值不能发生变化(命名规范:单词全部大写,多单词以下划线隔开)
修饰的变量是引用类型:变量的储存地址值不能发生变化
抽象类
概述,继承中,子类继承父类,父类有些方法,知道功能但不能给出明确实现
有了抽象方法,这个类必须声明为抽象类
一个没有方法体的方法,应该定义成抽象方法,用abstract修饰
类中有了抽象方法,必须定义成抽象类,抽象类也用abstract修饰
特点
抽象类不能实例化
抽象类中不一定有抽象方法,但有抽象方法的一定是抽象类
抽象类的子类,要么是重写父类所有抽象方法,要么子类也是抽象类
成员变量,方法,构造器,抽象类都具备
接口
一种规则,一种扩展功能,降低实体之间的耦合性,提高扩展性和灵活性
定义方式 public interface 接口名 {}
接口不能实例化
接口和类之间是实现关系,通过implements关键字表示
public class 类名 implements 接口名 {}
接口的子类要么是抽象类,要么重写接口中所有的抽象方法
接口的成员
成员变量,只能是常量,默认修饰符public,static,final
构造方法,没有!!!
成员方法,只能是抽象方法,默认修饰符public,abstract
接口的关系
类与类的关系:继承关系,只能单继承,可以多层继承
类与接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
接口与接口:继承关系,可以单继承,也可以多继承,一个接口可以同时继承多个接口
Jdk8开始新增接口方法
默认方法:default修饰 需要用接口的实现类的对象来调用
静态方法:必须static修饰 必须用本身的接口名来调用,不能用实现类调用
私有方法:必须private修饰 只能在接口中访问
多态
概述,同一对象,不同时刻表现出不同形态
实现多态的步骤:1.有继承/实现关系2.方法重写3.父类引用指向子类对象
举例:Animal 对象名称 = new 猫 ();
接口类型 对象名称 = new 实现类();
访问特点:
成员变量:编译看左边,运行看左边
成员方法:编译看左边,运行看右边
访问不一样是因为,成员方法有重写
优点:多态形式下,右边对象可以实现解耦合,便于扩展和维护
劣势:多态下不能使用子类的独有功能
类型转换
向上转型:把子当作父,猫当动物看 动物 动物 = new 猫();
向下转型:把父当作子,不能自动完成 猫 猫 = 动物对象;
强制类型转换:子类 对象变量 = (子类)父类类型的变量
变成子类类型,就可以调用子类的特有功能
如果转型后类型和对象真实类型不是同一类型,那么转换会报错:ClassCastException
转换前使用
变量名 instanceof() 真实类型
判断左边对象是否是右边的真实类型
标签:进阶,继承,小结,javaEE,接口,子类,修饰,父类,方法 From: https://www.cnblogs.com/kyrie-66/p/17288284.html