javaEE进阶小结与回顾(一)

发布时间 2023-04-04 23:42:11作者: zFlame_5020

继承

继承的格式:public class Student extends People()

父类:子类的共性抽取而来

继承的好处,子类可以直接使用父类成员,提高代码复用性与可维护性

继承的弊端,使类与类之间产生关联,增强其之间的耦合性,父类变化时子类不得不跟着变化

类与类之间具有is a的关系时,适合使用继承,比如猫是动物

 

继承的特点,Java中类只支持单继承,不支持多继承,但支持多层继承,父类的private成员,子类不能直接访问

 

访问特点,就近原则,但不考虑父类的父类

 

构造器访问特点,子类每个构造都会先调用父类构造,再执行自己

调用父类构造有三种方式:

  1. 默认,调用父类空参构造super();//不写也有,构造方法第一行
  2. 如果父类只有带参构造,没有空参构造,super(参数列表);
  3. this(参数列表)

 

super关键字

this关键字,代表调用该方法的当前对象

super,代表父类存储空间的标识(可以理解为父类对象引用)

有同名成员变量及方法时,默认访问子类,要访问父类用super.成员变量名/super.方法名()

 

方法重写

子类出现与父类一模一样的方法声明

子类需要父类的功能,但父类功能不能完全满足需求,需要子类有自己的特有内容时,重写父类方法,这样既沿袭父类功能又可以定义自己的内容

@override,jdk提供的注解,用来修饰方法,可以检查子类方法重写的格式

注意事项,父类私有方法不能重写,子类重写父类,访问权限要大于等于父类方法访问权限(一般权限一样)

 

 

权限修饰符

概述,用来控制一个成员能够被访问的范围,可以修饰成员变量,方法,构造器,内部类,不同修饰符的限制范围不一样

作用范围:

private:同一类中

缺省(什么都不写):同类,同一包中其他类

protected:包中,不同包下子类

public:范围最广,不同包无关类也能访问

 

static关键字

概述,一个关键字,静态的意思,可以修饰成员方法,成员变量

static修饰的特点:

被修饰变量称为静态变量,被该类所有对象共享

被修饰方法叫静态方法,可以通过类名直接调用

静态变量(类变量)和类方法(静态方法),除了可以创建对象调用,还可以通过类名.方法名直接调用

静态成员随类的加载而加载,非静态成员必须创建对象才存在

 

注意事项:

  1. 共享的东西适合使用静态修饰
  2. 修饰方法的好处,可以直接用类名调用
  3. 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() 真实类型

判断左边对象是否是右边的真实类型