面向对象的三大特征,封装,继承,多态,接口及拓展异常等

面向对象的三个基本特征

终于到了这个激动的时刻,再次写下一篇意
味深长的博文,其中心酸唯有自己懂得。

说到面向对象,大家还有不清楚的吗?我在这里简单说一下,面向对象就是世间万物皆可为对象,那么你面对它,就是面向一个对象。

说到面向对象
在这里插入图片描述

首先说继承

概念:
继承是面向对象三大特征之一。可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。

格式:
格式: public class 子类名 extends 父类名{}

父类:
父类:又称基类/超类

子类
又称派生类

继承中子类有什么特点呢?

1 子类可以有父类的内容
2 子类还可以有自己特有的内容

继承中访问成员变量的特点

在子类的方法中访问一个变量,首先在子类局部范围找–>子类成员范围找–>父类成员范围找–>如果都没有找到就报错(不考虑父亲的父亲)

super关键字

super关键字的用法和this关键子的用法相
似 。this: 代表本类对象的引用。super: 代表父类存储空间的标识( 可以理解为父类对象引用)

继承中构造方法的访问特点

子类中所有的构造方法默认都会访问父类中的无参的构造方法, 这是为什么呢? 因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。

推荐: 自己给出无参构造方法

继承中成员方法的访问特点

子类成员范围找–>父类成员范围找–>如果都没有找到就报错(不考虑父亲的父亲)

有继承那么就有方法的重写

概述:子类中出现了和父类一摸一样的方法声明

应用: 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,既沿袭了父类中的功能,有定义了子类特有的内容

Override

其中Override是一个注解,它可以帮我们检查重写方法的方法声明的正确性

方法重写的注意!!

私有方法不能被重写(父类私有成员,子类是不能继承的)

子类方法访问权限不能比父类低(public>默认>private)

java中只支持单继承,不支持多继承,但可以多层继承。

状态修饰符

Final(最终态)

final关键字是最终的意思,可以修饰成员方法,成员变量,类

final修饰特点:final 修饰方法,表明该方法不能被重写

final 修饰变量, 表明该变量为常量,不能再次被赋值

final 修饰类,表明该类为最终类,不能被继承

final修饰基本类型的数据值不能改变

final 修饰引用类型是指引用类型的地址值不能改变,但是地址里面的内容是可以改变的

Static(静态)

static 修饰的特点

被类的所有对象共享( 这也是我们判断是否使用静态关键字的条件)

可以使用类名调用,当然,也可以使用对象名调用

推荐使用类名调用

static 访问的特点
总结成一句话: 静态成员方法只能访问静态成员

在这里插入图片描述

多态

概述:

同一个对象,在不同时刻表现出来的不同形态

多态的前提和体现

  1. 有继承/实现关系
  2. 有方法重写
  3. 有父类引用指向子类对象

多态中成员访问特点

  1. 成员变量:编译看左边,执行看左边
  2. 成员方法:编译看左边,执行看右边(原因是:成员方法有重写,而成员变量没有)

多态的转型

向上转型:从子到父
向下转型:从父到子

抽象类

在java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类

抽象类 用abstract定义,例如定义为抽象类:public abstract class Animal{ }

抽象方法 用abstract 定义,例如: public abstract void eat() 这里没有给出方法体

抽象类的特点

  1. 抽象类和抽象方法必须使用abstract关键字修饰
  2. 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
  3. 抽象类不能实例化, 通过子类对象实例化,这叫抽象类多态
  4. 抽象类的子类,要么重写抽象类中的所有抽象方法,要么是抽象类

抽象类的成员特点

成员变量: 可以是变量 也可以是常量

构造方法: 有构造方法,但是不能够实例化

成员方法:

  1. 可以有抽象方法:限定子类必须完成某些动作
  2. 也可以有非抽象方法:提高代码复用性

接口

概述:接口就是一种公共的规范标准,只要符合规范标准,大家都可以通用

java中的接口更多的体现在对行为的抽象

接口用关键字interface 修饰

接口不能实例化, 可以参照多态的方式,通过实现类对象实例化,这叫接口多态

接口的实现类:要么重写接口中的所有抽象方法 要么是抽象类

成员变量: 只能是常量 默认修饰符:public static final

成员方法: 只能是抽象方法 默认修饰符: public abstract

类和接口的关系

  1. 类和类的关系: 继承关系, 只能单继承,但是可以多层继承
  2. 类和接口的关系:实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
  3. 接口和接口的关系: 继承关系,可以单继承,也可以多继承

抽象类和接口的区别
在这里插入图片描述
再次强调抽象类是对事物的抽象,接口时对行为的抽象

💕在这里插入图片描述

内部类和Api

内部类

概述:就是在一个类中定义一个类。举例: 在一个类A 的内部定义一个类B,类B就称为内部类

内部类的访问特点

  1. 内部类可以直接访外部类,包括私有
  2. 外部类要访问内部类的成员,必须创建对象

成员内部类

格式:外部类名.内部类名 对象名=外部类对象.内部类对象;

局部内部类

局部内部类可以直接访问外部类的成员,也可以访问方法内的局部变量

匿名内部类

前提:存在一个类或者接口,这里的类可以是具体的类也可以是抽象类

格式: new 类名或者接口名(){ 重写方法;};

本质: 是一个继承了该类或者实现了该接口的子类匿名对象

常用Api

  1. Math在这里插入图片描述
  2. System 在这里插入图片描述
  3. Objict
  4. Arrays
    在这里插入图片描述
  5. Lambda
    在这里插入图片描述

Lambda使用前提:

  1. 有一个接口
  2. 接口中有且仅有一个抽象方法

Lambda表达式的省略模式(规则)

  1. 参数类型可以省略。但是有多个参数的情况下,不能只省略一个
  2. 如果参数有且仅有一个,那么小括号可以省略
  3. 如果代码块的语句只有一条,可以省略大括号和分号,甚至return

Lambda表达式的注意事项
在这里插入图片描述
Lambda表达式和匿名内部类的区别
在这里插入图片描述
😂😂😂在这里插入图片描述

包装类&日期Api&异常体系

包装类概述
在这里插入图片描述
int和String互换
在这里插入图片描述
自动装箱和拆箱
在这里插入图片描述
日期类Date

概述
在这里插入图片描述
Date常用方法
在这里插入图片描述
SimpleDateFormat 类
在这里插入图片描述
Calendar
在这里插入图片描述
💕💕💕💕在这里插入图片描述

异常

在这里插入图片描述
异常处理
在这里插入图片描述
编译时异常和运行时异常的区别
在这里插入图片描述
异常处理之throws
在这里插入图片描述
自定义异常
在这里插入图片描述
throw 和throws的区别
在这里插入图片描述
在这里插入图片描述

总结

系统的讲了面向对象三大特征的概述,定义,实例化,成员访问,使用前提,注意事项,以及各种间的区别。

内容图片有点多,也有没有整理到的地方大家多包涵。

  • 9
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值