Java-封装、继承、多态

Java-封装、继承、多态

1 封装

1.1 软件包机制

package:设置的是class文件的保存目录,和源文件没有关系,如果没有设置package语句,则class文件和Java文件在同目录

作用:

  1. 为了解决命名冲突的问题

  2. package语句只能出现在Java源文件的第一行

  3. 通常采用公司域名倒叙的方式(域名倒叙.项目名.模块名)

  4. 完整的类名是带有包名的(编译语句: javac -d 生成路径 源文件和运行语句: java.edu.zrz.A)

如何使用其他包中的类:

  1. 引入当前类中需要的其他类(import 包名.类名)

  2. 只能在package语句之下,class之上

  3. .*是导入某个包下的所有类(java.lang.*下的是核心类,不需要导入可以直接用)

静态导入: 在访问这个类的静态属性的时候,可以直接写名字,不需要加类名前缀

注意: 编码的时候按下空格和回车会自动导包,特别注意不能导错包

1.2 权限控制修饰符

image-20210605101204418

2 继承

2.1 概述

从已有类中派生出新的类,新的类能有已有类的属性和行为,并且能够添加新的属性和行为

目的: 代码重用

注意:

  1. Java中只支持单继承,一个类只能有一个父类,但是一个类可以有多个子类

  2. private修饰的属性不能继承

  3. 使用extends关键字表示

  4. 任何类都有父类,如果没有显示继承,则默认继承Object(Java.lang.Object),Object是Java中提供的根类(祖宗),任何类都直接或者间接继承Object

2.2 语法

[修饰符]class 子类类名 extends 父类类名{}

通过子类就可以直接调用子类和父类的方法

私有化不能被继承

2.3 Super

2.3.1 概述

Super保存了父类型特征,可以理解为是父类对象(Super和this不同,Super没有独立的空间,也不是变量)

2.3.2 作用
  1. 区分子类和父类同名的变量和方法

  2. super(…)只能用在子类构造方法第一行,用来调用父类构造方法(this(…)也是必须在构造方法第一行,所以两个不能同时使用,如果构造方法中两个都没有,则构造方法第一行默认有super()调用父类无参构造)

2.3.3 构造方法私有化

私有化构造方法之后该类不能被继承,因为子类构造方法中需要用到super()去调用父类构造

2.4 方法重写

2.4.1 应用场景

当父类的方法无法满足我们的需求的时候,我们就需要对从父类继承过来的方法进行重写

2.4.2 重写条件
  1. 必须在有继承关系的体系中

  2. 方法名与参数列表和返回值要相同

  3. 不能拥有比原方法更低的访问权限(比如public变为private就不可以)

  4. 不能比原方法拥有更宽泛的异常

  5. 方法重写特指成员方法,和静态变量,静态方法,成员变量无关

2.4.3 重写(Override)与重载(Overload)的区别

在此类问题中,面试答题步骤为:

  1. 分别说出是什么

  2. 分别说出是干什么的

2.4.4 Override注解

@Override注解是编译时的注解,运行时就没有了,目的是在编译时检查我们的重写方法是否写错

2.5 final

  1. final修饰的类不能被继承
  2. final修饰的成员方法不能被重写
  3. final修饰的变量不能二次赋值,没有默认值,必须显示赋值

(常量: 一般使用public static final修饰 psf,整个程序生命周期不能被更改,常量命名建议全部大写)

image-20210605151934498

3 多态

3.1 概述

父类引用指向子类对象

父类引用:使用父类说明的引用类型变量

指向:通过内存地址可以找到谁

使用父类类型 声明的变量 保存子类对象的使用

父类 变量 = new 子类();

3.2 两种多态形式

编译时多态:

​ 编译时多态是静态的,主要是指方法重载,它是根据不同的参数列表来区分不同的方法

​ 编译之后就会变成不同的方法,在运行时就谈不上多态了

运行时多态:

​ 运行多态是动态的,主要是指动态绑定来实现,指子类实现父类的方法

3.3 相关知识

软件设计六大原则:

  1. 单一职责原则: 功能职责单一,只拥抱一种变化(只做一件事)
  2. 里氏替换原则: 所有能使用父类的地方,都可以使用子类(多态就是里氏替换原则的一种体现)
  3. 依赖倒置原则: 细节依赖抽象
  4. 接口隔离原则: 最小接口,否则需要实现很多不需要方法
  5. 迪米特原则(最少朋友原则): 低耦合,高内聚
  6. 开闭原则: 对修改关闭,对扩展开放
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值