20210316面向对象编程

Java的核心思想就是OOP(面向对象编程)

1初始面向对象

在这里插入图片描述
属性+方法 构成 类
在这里插入图片描述
以类的方式组织代码,以对象的方式组织(封装)数据
蜻蜓、蝴蝶、蝗虫是对象,飞行昆虫是子类,昆虫是父类
地铁设计是类,车辆段设计、车站设计、机电设计是子类,建筑、结构、风、水、电、车辆等专业是对象。
从认知角度看,是现有地铁车辆、建筑才有车站、车辆段,才有整条地铁线路;
从设计角度来看,先有总体设计、线站位、篇册章节划分,才有各专业章节内容及图纸。

2方法回顾和加深

在这里插入图片描述
break:跳出swich,结束循环
return:结束方法,返回一个结果。返回值类型必须与方法返回值类型相同
方法名:注意规范驼峰命名。 做到见名知意。
参数列表:(参数类型,参数名)…可变长参数
异常抛出:后续讲解
形参和实参:数据类型要一致
值传递、引用传递(没学明白,据说在学习了面向对象后会有个清晰认识)
this关键字:在继承、多态里学

3对象的创建分析

在这里插入图片描述
类不代表具体事物,是抽象的一系列事物的特征
在这里插入图片描述
在这里插入图片描述
静态方法是和类一起加载在堆的方法区的,因此所有的对象均可以直接调用静态方法。
栈里主要存放一些方法和变量的引用
堆里存放具体创建出来的对象
《P65 面向对象06:创建对象内存分析》
这一节后面要反复回看。

4面向对象的三大特性

4.1封装

在这里插入图片描述
方法的重载,可以增加方法的适用范围,比如println()源码中,就是一连串重载方法,里面定义了各种参数类型。
Alt+Insert 自动get/set

4.2继承

在这里插入图片描述
更正extends
子类可以通过【super.属性】继承父类属性,可以通过【类.属性】继承父父类的属性,不能用【super.super.属性】的方式。
子类可以继承父类方法,以【对象.方法()】的形式,或者在子类的方法中,用【super.方法()的形式】,私有方法不能继承 。但是,父类不能继承子类方法。
子类可以继承父父类方法,以【孙对象.方法()】的形式。
接下来问题来了,如果父类和父父类方法名相同怎么办?试验证明【孙对象.方法()】输出的是父类方法的结果,而不是父父类的结果。那么怎么用孙对象,引用父父类的重名方法呢?试验证明,如果是非静态方法,则涉及方法重写,那么只能引用最近的(自己或父类)同名方法。如果要使用【类名.方法()】,则必须用静态方法。
所以总结super的独特作用是什么?引用父类非静态方法、非静态属性。而静态方法、静态属性引用也可以用【父类名.方法()】、【父类名.属性】体现。当然【类名.方法()】是通用格式,无论有没有父子关系。
在这里插入图片描述

Ctrl+H 查看继承树
super注意点:
1.super调用父类的构造方法,必须在构造方法的第一个。默认调用父类无参构造,当父类为有参构造时,必须显示定义。
2.super必须只能出现在子类的方法或者构造方法中!
3.super和this不能同时调用构造方法
super VS this:
代表的对象不同
this:本身调用者这个对象
super:代表父类对象的引用
前提
this:没有继承也可以使用
super:只能在继承条件才可以使用
构造方法:
this();本类的构造;
super();父类的构造;
重写
重写的本质是子类修改父类的某个方法。
重写都是方法的重写,和属性无关
重写只跟静态方法有关,和非静态方法无关
只能重写public方法,不能重写private方法
重写前提:需要有继承关系,子类重写父类的方法
特点:
1.方法名必须相同
2.参数列表必须相同(区别重载)
3.修饰符:范围可以扩大,不能缩小public>protect>default>private
4.抛出的异常:范围可以被缩小,但不能扩大ClassNotFoundException–>Exception(D大)
重写,子类的方法和父类必须要一致,方法体不同!
为什么需要重写?
1.用父类方法的时候,子类需要对方法进行调整。方法重写相当于基因突变。继承和重写是多态的条件。
Alt+Insert:override

4.3多态

在这里插入图片描述
通过多态可以实现动态编译:类型:通过多态将代码可扩展性增强。
引用类型转换
instanceof:判断一个对象属于哪个类
先用instanceof判断类型是否相似,才能进行强制转换。
学习方法:多实践,多测试自己脑中的想法。

5static关键字详解

静态变量,又叫类变量,与类一起加载,可以直接通过【类.变量名】引用
非静态变量,又叫实例变量,需要将类实例化后才能引用,
静态方法、非静态方法同理

6抽象类

抽象类是一种约束
在这里插入图片描述

7接口

在这里插入图片描述
接口的本质是契约
接口的作用:
1.接口是一个约束
2.定义一些方法,让不同的人用不同方法实现
3.接口中方法是public abstract 的
4.接口中不能直接定义变量,接口中只有常量,常量是public static final的
5.接口和抽象类都不能实例化,因为都没有构造方法
6.implements可以实现多个接口
7.子类必须重写接口中的方法

8内部类

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值