Java是面向对象的编程语言

面向过程和面向对象的关注点:

面向过程关注每个阶段的过程

面向对象关注每个动作的执行者

面向对象的四大特征有 封装 继承 多态 抽象

面向对象的四大特征我认为可以称之为四大行为或动作

没有抽象封装继承多态,我们也可以写代码,这就是面向过程语言

面向对象的四大特征我们写代码一定要用到吗,看情况,具体问题具体对待,就看自己理解深不深

什么是抽象?

抽象是从具体事物抽取,概括出他们共同方面,属性与关系,将个别的非本质的,方面属性从关系中舍去,最后产生一个思想(Object?)

在Java的角度看,抽象其实是看你想要什么,从什么中抽取,产物是类,抽象类,接口

比如:你从一群抽烟的人中抽取,你想要什么?你注重他们会抽烟(接口),还是注重他们是人?还是注重这一类人(烟民)

相同的事物 角度不同,需求不同 抽取的就不同

类和接口抽象类最大的区别是能不能new 对象

行为是否会有默认的实现 抽象时的思考

封装:

看了一天的知乎,对封装理解还是似懂非懂,
封装:隐藏细节,暴露接口
目的:减少耦合
常见就是将重复代码重构出一个方法
具体体现 实现隐藏 细节私有化

我的认为是:让我们更关心业务逻辑,不关心实现,且封装好处是易扩展,不用牵一发动全身

继承:

任何类都继承自Object
首先一个类仅可以继承一个类,一个接口可以继承多个接口
目的:复用,扩展
继承之后子类拥有父类的非私有属性和方法,子类可以拥有自己的属性和方法,具有了扩展性
子类可以重写父类的方法

多态:
多态满足的条件
子类继承父类
子类重写父类方法
父类引用指向子类对象

个人理解:
代码中:我关心的是能不能有我所要的功能
谁提供的,下一次不是你提供的,跟我没有关系
主要原因是设计和实现的分离,这个做法有利于软件的重用

目的是为了让代码更加灵活,具有可维护性

类 对象 实例 抽象类 接口 的关系

类和类具有继承关系

类可以通过new的方式创建对象 即一个实例
女朋友(对象) 她(实例)

类可以继承抽象类可以实现多个接口

抽象类和接口所关注的点不同

抽象类有属性接口中没有

继承是 is

实现是 has

普通类和抽象类在当做基类的区别在哪里

方法是否必须重写