java基础_面向对象_DAY03

面向对象

面向对象&面向过程

属性+方法 = 类

⚠️面向过程:打开冰箱,放进大象,关闭冰箱;
⚠️面向对象:手工耿造了个专门放大象的工具,找到这个工具,直接放冰箱里就好了,怎么放的?要不要开门?怎么开门的?我不管啦,手工耿.工具即可。

这里需要注意,并不是啥都要找工具或者其他帮助来解决问题,比如把可乐放进冰箱这类简单的工程,直接放进去更简单,造轮子反而很麻烦,直接自己处理放进去就叫面向过程。

⚠️综上:如果需要多人协助,比较复杂麻烦,那就找轮子,别人造好的轮子拿过来用,这就是工具类的好处,面向对象的便捷,前提是你会找轮子。

面向对象的本质

面向对象本质:以类的方式组织代码,以对象的方式组织(封装)数据。

抽象

抽象:将具有共同属性的部分剥离出来,即抽出比较同类,像的那部分;这个个人理解,切勿当真,稍后解释。
抽象出类,类里面造轮子就是方法
类里面固定2项东西,属性和方法

⚠️比如person类,属性是人名,年龄等,抽象的共有的,方法是吃饭,修车等。
类实例化后可以使用方法。

方法

1、方法的定义:
  1. 修饰符 static
  2. 返回值类型
  3. break:跳出switch,结束循环;return 结束方法
  4. 方法名
  5. 参数列表(参数类型 参数名);…可变量参数
  6. 异常抛出 throws
public class Demo01 {
    public static void main(String[] args) {

    }
    public String sayHello(){
        return "Hello i";//return 表示方法结束,且要求返回值类型与方法上的类型一致
    }

    public void nothing1(){
        return ;//没有返回值
    }


}
2、方法的调用
  1. 静态方法
  2. 非静态方法
  3. 形参和实参
  4. 值传递和引用传递
  5. this关键字,调用方法所在的类的实例,就不需要new实例化了,好像是1.8之后不需要this关键字了。新特性吧可能。

在这里插入图片描述

构造器

啥事构造器?

构造器又叫构造方法,就是特殊的方法,用来初始化对象的;
构造方法的样式和方法差不多,没有返回值,没有方法体而已,但要求方法名等于类名
构造器就是一个没有返回值的空方法,创建类的时候默认有一个构造器,如下图:

在这里插入图片描述

构造器也可以自己写,比如想写一个有参构造器,如上图,这就叫重载;

三大特性

封装

代码中的数据需要封装,只开口接受数据等
高内聚、低耦合
尽量暴露少量的东西给外部使用
属性私有,get/set

比如属性:private 私有的属性;需要使用get/set提供private修饰的属性可使用的方法;

在这里插入图片描述

⚠️那么set/get的意义是什么呢?是为了在get/set方法里加一些封装的方法,比如下图:

在这里插入图片描述

封装总结
封装的好处
  1. 提高程序安全性,保护数据;比如增加一些数据的判断啊,规范啊
  2. 隐藏代码的实现细节;
  3. 统一借口;
  4. 提高系统可维护性
继承

字面意思,继承父辈的一些东西。
⚠️子类是父类的扩展,如下图
⚠️继承是类和类之间的关系
在这里插入图片描述

子类继承父类的全部public方法和全部public属性

在这里插入图片描述

属性的修饰符有:

  1. public 公共的
  2. protected 受保护的
  3. default 默认的
  4. private 私有的

⚠️所有的类追踪溯源都是object类,且不需要写extends Object
⚠️java中是单继承,每个子类都有直接的一个父类,虽然父类可以有多个子类。
直接或者间接继承object类

super|this

this.本类的属性或者方法;
super.父类的属性或者方法;

super调用父类的构造方法,必须写在第一行,super();即可;
super只能出现在子类的方法中,或者构造方法中;
super 和 this不能通知调用构造方法;

重写

⚠️重写是方法的重写,重载是相同方法不同参数的重载,方法体不同;
⚠️重写必须具有继承关系之间的,子类重写父类的方法,参数列表一致;
⚠️修饰符:范围可以扩大不能缩小,public>Protected>Default>private
⚠️抛出的异常,可以被缩小但不能扩大

在这里插入图片描述

⚠️为啥需要重写?

父类的功能子类不一定需要,或者不一定满足;
子类类似于私人定制

静态方法只能被继承,不能被重写

静态方法
即父类的非静态的public方法才能被子类重写
非静态的public方法
/这里的子类B重写了父类A的test方法,所以实际类型是B的a调用的是B类的方法,即重写的方法,一旦重写就是子类的方法,除非是子类独有的,a将无法调用,或者要经过特殊处理才能调用。
除非你这里new A();可以调用父类A的test方法,否则只能调用子类的方法,即子类一旦重写了方法,调用的就是子类
但是如果是子类特有的方法,这里的a将无法调用重写的方法。
/

多态

水的形态有多种,对象的形态也有多种。

多态是方法的多态

1、多态是方法的多态
2、子类和父类的关系转换,将父类强制类型转换成子类的,如果失败可能抛出的异常是ClassCastException
3、多态存在的前提条件:继承关系,方法被重写;

关键字 instanceof

instanceof

1、父类引用指向子类的对象;
2、把父类转换成子类,向上转型;
3、把父类转换为子类,向下转型,即强制转换;
4、方便方法的调用,减少重复的代码

总结

好抽象,抽象是一种编程思想,下节继续!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值