【Java】面向对象

类(Class)

  • 类是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。

  • 类是对现实生活中一类具有共同特征的事物的抽象。如果一个程序里提供的数据类型与应用中的概念有直接的对应,这个程序就会更容易理解,也更容易修改。一组经过很好选择的用户定义的类会使程序更简洁。此外,它还能使各种形式的代码分析更容易进行。特别地,它还会使编译器有可能检查对象的非法使用。

  • 类的内部封装了属性和方法,用于操作自身的成员。类是对某种对象的定义,具有行为(behavior),它描述一个对象能够做什么以及做的方法(method),它们是可以对这个对象进行操作的程序和过程。它包含有关对象行为方式的信息,包括它的名称、属性、方法和事件。

  • 类的构成包括成员属性和成员方法(数据成员和成员函数)。数据成员对应类的属性,类的数据成员也是一种数据类型,并不需要分配内存。成员函数则用于操作类的各项属性,是一个类具有的特有的操作,比如“学生”可以“上课”,而“水果”则不能。类和外界发生交互的操作称为接口。

 

一、面向对象三大特征之封装(Encapsulation)

合理隐藏,合理暴露

  属性私有化,提供setter和getter方法访问属性

  隐藏具体实现细节,仅对外提供开放接口

  控制访问级别

增加数据安全性,不必在意实现细节,只需使用提供接口方法。

JavaBean

类必须是具体的公开的,必须提供无参构造器,并合理隐藏合理暴露。

 

二、面向对象三大特征之继承(Extend)

  将多个类共有的属性方法,提取出作为一个父类(基类)。

  其余类需要共有属性方法,作为子类(派生类)继承父类。

减少代码冗余(多余的重复或罗嗦内容),提高代码质量,使代码复用性强,但尽量减少继承关系,以降低耦合度(程序中,模块及模块之间信息或参数依赖的程度)。

Java中,不能多继承,可以多重继承。

 

三、面向对象三大特征之多态(Polymiorph)

同类型的对象,执行同一个行为,会表现出不同的行为特征。

设计时多态

  指使用方法重载的方式进行设计,即可进行多种选择。

  重载,一个类中可以存在多个方法名相同,但必须参数数量或类型的不同的方法,返回值也可以选择性不相同。

 运行时多态

  指使用方法重写的方式进行设计,即可使调用起来更加灵活。

  重写,指在继承模式中,子类可以重新将父类的方法重新设计翻新。

 

四、抽象类

抽象类必须使用abstract来修饰类,抽象类必须存在至少一个抽象方法。

通常在不确定方法的实现,没有足够的信息来描述一个具体对象的时候,使用抽象类。

子类继承抽象类必须实现抽象类中的抽象方法。

 

模版方法

在抽象类中实现一个模版方法,在模版方法中调用自己的抽象方法,由子类继承抽象类来实现抽象方法从而实现模版方法中的具体细节。

不同的子类实现抽象类中的抽象方法(回调),实现不同的细节,从而形成模版方法。

来一个有味道的模版方法例

 

 

  

  

 

 

五、接口

接口与抽象类的区别

  • 1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

  • 2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。

  • 3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。

  • 4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

:JDK 1.8 以后,接口里可以有静态方法和方法体了。

:JDK 1.8 以后,接口允许包含具体实现的方法,该方法称为"默认方法",默认方法使用 default 关键字修饰。

:JDK 1.9 以后,允许将方法定义为 private,使得某些复用的代码不会把方法暴露出去。 

更多区别推荐资料:深入理解Java的接口和抽象类

 

六、内部类

静态内部类

成员内部类

局部内部类

匿名内部类

 

java面向对象的五大原则

单一职责原则:一个类,最好只做一件事,只有一个引起它变化。每个类应该实现单一的职责,如果不是,那就把类拆分

开放封闭原则:对扩展开放,对修改封闭

里氏替换原则:子类必须能够替换其基类,里氏替换原则中说,任何基类可以出现的地方,子类一定可以出现

依赖倒置原则:依赖于抽象接口,不要依赖于具体实现,简单来说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户于与实现模块间的耦合

接口隔离原则:使用多个小的专门接口,而不是使用一个大的接口

 

 

posted @ 2022-02-21 03:01  Shuranima  阅读(16)  评论(0)    收藏  举报