JAVA--面向对象

面向对象

概念

什么是面向对象

一切看待问题的思维方式,着眼于找到一个特殊功能的具体的个体,然后委托这个个体去做某些事情,我们称之为“对象“;

1、在java中,把所有的一切事物都看作对象,一种是可见的,一种是虚拟的物体

2、面向过程编程和面向对象编程的区别是什么?

    面向过程编程主要描述一件事或者一个过程的执行
面向对象编程主要用语言描述将现实世界中存在的事物,或者规律。无限接近机器语言。

3、对象:在java 中所有对象都是Object,对象包含哪些属性和特征?

对象的属性,属性是区别于其他事物的特征。
对象的行为特征,所有的对象都有自己的属性和行为,两者加起来是区别于其他事物的标准。

4、在java用什么来描述一个类?

类和对象的关系 Class 和 Object的关系
类的概念:类是所有对象抽象概念,对象类的具体体现(实体),对象称为类的具体实例。
类是抽象的,对象是具体的

5、类——>实例化对象

对象实例化:new 关键字 实例化对象或者创造一个对象
  对象和对象引用的关系 电视机和遥控器的关系,拿到了遥控器就可以控制电视机 
      类名     变量名/对象的引用       关键字        构造方法
在new一个对象的过程中,计算机做了什么?
在内存中申请一片独立的空间,表示可以使用独立空间来运行程序
 person->   | 实体 | ---变量—----> | 地址 |
 int——>     |     |               |     |
  .         |     |              |     |
  .         |     |               |     |
  .         |     |               |     |
  float-->  |     |               |    |

6、面向对象的三大特性:

封装:隐藏实现的细节、对外提供公共的访问方法(接口)
    好处:从代码设计者的角度,一个是安全性,防止代码被修改破        坏。从调用者的角度,忽略实现的细节,只关注功能调用。 
    如何设计封装:成员变量尽量私有化,对外提供公有的方法
继承:(后续)
多态:(后续)

7、package 包的概念引入:

对所有的class进行分类:以方便管理。包命名规则:小写字母,一般都是四级目录
com.公司名.项目名.模块名称
如何编译包
javac -d . 类名.java(注意空格)
如何执行:
      Java 全路径(包名/../../类名)
cd 到指定的目录去执行java 命令 

8、构造方法:什么是构造方法?

构造方法是一个类在初始化时自带的特征,改变不了。
jvm在构建一个类的时候,默认会构建一个默认的构造方法
   javap 全路径  xx
 构造方法的特点:   
   公有的、和类名相同、没有返回值
    构造方法的用处在哪里?
初始化成员变量(this 本类对象的引用(拿到地址))
    构造方法越多,代表在这个类初始化的时候,形态越多,功能越强大。
构造方法的重载(overload):

参数类型不同,参数个数不同,参数次序不同 ,都能构成重载。仅限于本类。

9、类的成员方法:

方法的概念:方法是一个类接受外部信息的一种渠道。
方法在一个类中专门解决业务逻辑的。
public 返回值 方法名(参数列表){
//return 返回值;
}

10、方法参数的传递:传值或者传递引用

方法的参数传递只能传递两种类型:
如果要是传值,就是一个具体的值,
如果要传递引用,那么传递的该对象的地址

11、static 用来修饰静态的方法、静态代码模块、成员变量

如果使用static所修饰的方法或者变量,最标准的方法:可以使用类名直接调用,不需要new对象来调用,可以使用类名直接调用的,不需要new对象。
static 修饰的变量在内存中只有唯一的一个地址,
使用场景:只有在工具类中才可以使用,该方法被频繁的调用,确实节省内存空间

12、类的继承 extends

类与类的关系有哪些?
第一种是关联(has-a)关系(聚合)、第二种是继承(is-a)关系
如果是关联关系,那么就是类调用类的关系
所有的对象都是继承Object类,java是单根继承的特点
单根继承的好处是什么?不好的地方?
    子类可以调用父类的方法,减少代码的冗余度。
在父类的角度考虑问题,继承可以延伸父类的功能(扩大功能),减少代码冗余度 
保证纯正的血统
多继承的好处是什么?
如果子类 继承父类,子类可以调用父类的公有方法,不能调用父类的私有方法
子类调用父类的时候,父类的构造方法会被调用。
     super关键字只能存在子类中,主要在子类的方法中调用父类的方法,包括构造方法
super可以在子类的构造方法中可以调用父类的构造方法super(),默认调用无参的构造函数,super可以指定
   重写(override)子类覆盖父类的同名方法,好处在于扩充子类的方法功能。
里氏替换原则:如果b类c类具有相同的属性和方法,就应该把相同的属性和方法提取到a类中,让b类和c类继承a类

13、final关键字

表示最终的,如果用final所修饰的变量,称为常量(不能被改变或者赋      值),如果final修饰一个方法,那么该方法在子类中不能被重写,如果      final修饰一个类,那么这个类不能被继承。 

14、抽象类 abstract关键字

```
    抽象类和普通类的区别是什么?
    抽象类是不能被实例化的,也就说不能使用new 关键字,普通的类是可以  实例化的
    如果一个类有抽象方法,那么这个类必然是抽象的,反之抽象类不一定有    抽象方法。
    定义一个抽象类的用途在哪里?
    抽象的概念是不需要实际去做的,但是在实际应用中有两种场景的用途
    1、父类某一个功能或者方法,需要子类强行去重写的那么该方法必须是        抽象类。
    2、父类对于某一个方法,无法预知子类会怎么实现,那么该方法必须是        抽象的。
    抽象类在继承关系图中起到什么作用?
    承上启下的作用
### 15、接口 interface
    接口的概念 : 接口是一种标准,所以实现该接口的子类都要实现这个标       准。
    接口也是一种契约,所有实现该接口的子类都要实现该契约的条款。
    接口也是一种身份特征,所有的子类都具有该身份特征。
    接口内的方法都是公有的,接口里面的所有方法都是抽象的、公有的。
    接口可以继承吗?
    接口可以继承接口。
### 16、多态
    什么事多态?一个事物在不同的条件下,所表现的多种形态。
    在开发中使用多态的场景,主要是使用在方法的参数的传递上,可以传递    接口,也可以传递抽象类。
### 17、异常 Exception
    异常就是错误,是在程序编译阶段或者执行过程中的错误。
    学习异常主要是调试程序的错误信息,根据错误信息来发现程序的bug
    异常的分类:运行时态异常和编译时异常
    异常的级别关系:Error和Exception
    Error:表示不可抗阻的因素造成的。
    Exception:表示程序运行错误,是可以调试的。
捕获异常的语法
Try{
//假设代码运行正常.....
}catch(异常类型){
//程序出错了,要做什么,比如打印错误信息
}finally{
 //不管程序是否出错,都执行 
}


异常的类型必须是明确,这样才能准确的找出错误。
Throw 和 throws 的区别:声明异常 和 抛出异常
 声明异常要大于等于抛出异常
自定义异常信息:标准的异常中无法描述错误信息,我们需要自己定义一    个异常信息。
什么时候捕获异常?什么时候抛出异常?
如果我们调用的是标准API文档的方法,如果该类或者方法抛出异常,我       们必须要捕获,在实际开发中,我们所编写的程序的功能执行成功与否,    与外界有紧密关系(比如,参数传递、调用关系) 必须抛出异常。

猜你喜欢

转载自blog.csdn.net/qq_40825218/article/details/81414608