欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

面向对象编程

程序员文章站 2022-06-26 13:10:30
面向对象和面向过程 二者都是一种思想,面向对象是面向过程而言的,面向过程,强调的是功能行为,面向对象,将功能封装进对象,强调具备功能的对象 面向对象更加强调运用人类在日期的思维方式 面向对象的三大特征:封装、集成、多态 ......

说到面向对象,首先应该了解几个名词:类、对象、方法和属性。

  • 类是一组相关的属性和行为的集合
  • 对象是一类事物的具体体现,对象是类的实例
  • 方法是一个事物的行为
  • 属性是一个事物的特征信息

1. 封装

将类的某些信息隐藏在类的内部,不允许外部程序直接访问。只能通过该类提供的方法来实现对隐藏信息的操作和访问。

2. 继承

继承是类与类之间的一种关系,是一种“ is a ”的关系。比如狗类继承动物类。

Java中的继承是单继承,即一个类只能有一个父类。

子类拥有父类的所有非private修饰的属性和方法,实现了方法的复用。

2.1 继承的初始化顺序

1. 先初始化父类再初始化子类

2. 先初始化对象的属性,再执行构造方法中的初始化

2.2 final关键字

1. final修饰类,该类不能被继承,如String类

2. final修饰方法,该方法不能被重写

3. final修饰属性,该属性初始化时必须有值或在构造方法中赋值且只能赋值一次

4. final修饰变量,该变量只能赋值一次,即常量

final、finally与finalized区别

finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定会被执行(不管有没有抛出异常),经常用在需要放在释放资源的情况下。

finalize()是在java.lang.Object里面定义的,也就是说每一个对象都有一个这样的方法。这个方法在gc启动,对象被回收的时候调用。

2.3 方法的重载与重写

  • 重载

同一个类中方法名相同,参数列表不同。至于方法的其他部分,如方法返回值类型、修饰符等与重载无关。

  • 重写

在子类中创建了一个与父类中名称相同、返回值类型相同、参数列表的方法相同,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写(override),又称为方法覆盖、方法复写。

注意:

父类的成员方法只能被它的子类重写。

声明为 static 的方法不能被重写,但是能够再次声明。

修饰符:范围可以扩大但不能缩小:public>Protected>Default;

3. 多态

对象的多种形态。继承是多态的基础。日常使用举例:引用类型转换、抽象类、接口等

3.1 抽象类和接口的区别

语法层面的区别

  1. 一个类只能继承一个抽象类,一个类可以实现多个接口
  2. 抽象类的成员变量可以是各种类型的,接口只能是public static final,且有初始值
  3. 抽象类可以有非抽象方法,接口不能有非抽象方法
  4. 接口不能含有静态代码块、静态方法,而抽象类可以

设计层面的区别

  1. 抽象类是一种对事物的抽象,即对类抽象,而接口是对行为抽象。比如【鸟】和【飞机】这两个类,都有一个【飞】的行为,此时只能设计一个Fly的接口,来实现飞的动作,而不能将【飞】设计成一个抽象类。继承是一个【是不是】的关系,接口实现是一个【有没有】的关系。
  2. 抽象类作为很多子类的父类,它是一种模板式设计,而接口是一种行为规范,它是一种辐射式设计。比如B、C都继承了A,如果它们的公共部分需要修改,只需要修改A;如果接口里面发生了变化,所有实现此接口的类都必须进行相应的改动。

本文地址:https://blog.csdn.net/yh17388/article/details/110809777

相关标签: Java基础 java