乐趣区

关于java:编程体系结构06Java面向对象

本文源码:GitHub·点这里 || GitEE·点这里

一、根底概念

1、面向对象概念

面向对象编程的次要思维是把形成问题的各个事务分解成各个对象,建设对象的目标不是为了实现一个步骤,而是为了描叙一个事物在整个解决问题的步骤中的行为。

2、类和对象

对象:实在存在惟一的事物;在应用程序中对象是数据和动作的结合体,不仅可能进行操作,同时还可能记录下操作后果。

类:形象的概念,理论就是对某种类型事物的共性属性与行为的抽取;例如 User[名称. 年龄. 性别] 类用来形容用户的根底信息。

Java 开发中如何了解面向对象:构建适合的对象接口 API 体系,创立适合的对象,解决适合的问题,例如 JDK 的 API 曾经定义好的类,通过这些类创建对象间接应用;通过自定义类来创建对象应用,在 MVC 中模式中,不同业务性能创立不同的接口和类零碎。

3、属性和办法

类中变量

地位区别:

  • 成员变量是定义在办法之外,类内;
  • 局部变量是定义在办法之内。

作用区别:

  • 成员变量的作用是用于形容一类事物的公共属性的。
  • 局部变量的作用就是提供一个变量给办法外部应用而已。

初始值区别:

  • 成员变量是有默认的初始值。
  • 局部变量是没有默认的初始值的,必须要先初始化能力应用。

生命周期:

  • 随着对象的创立而存在,随着对象的隐没而隐没。
  • 局部变量在调用了对应的办法时执行到了创立该变量的语句时存在,局部变量一旦出了本人的作用域那么马上从内存中隐没。

类中办法

对一个类性能的具体形容,可能是类办法或者对象办法;

  • 类办法,又叫静态方法,应用类间接调用,常用工具类;
  • 对象办法,又叫实例办法,应用类对象调用,常见 API 办法;

构造方法

构造函数的作用是用来给对应的对象进行初始化解决,没有返回值类型的,构造函数的函数名必须要与类名统一,如果一个类没有显式的申明一个构造方法,那么 java 编译器会为该类增加一个无参的构造函数的,如果一个类曾经显式的写上一个构造方法时, 那么 java 编译器则不会再为该类增加一个无参的构造方法,构造函数是能够在一个类中以重载的模式存在多个。

4、接口

接口是一个非凡的类,接口的成员变量默认的修饰符为:public-static-final,接口中的办法都是形象的办法,默认的修饰符:public-abstract,接口不能创建对象且没有构造方法的,接口是给类去实现时应用的,非抽象类实现接口,必须要把接口中所有办法全副实现。

接口的作用:程序的解耦,定义实现类的束缚标准,如果须要拓展特地性能,也能够基于接口模式实现。

类与接口之间关系:多实现关系;接口与接口之间关系:多继承关系。

5、重载与重写

办法重写

父类的性能无奈满足子类的需要时,能够进行办法的重写即子父类应用同名的函数,且子类重写的办法应用 @Override 注解,这里存在继承的关系。

  • 办法名与形参列表必须统一;
  • 子类的权限修饰符必须要大于或者等于父类的权限修饰符;
  • 子类的返回值类型必须要小于或者等于父类的返回值类型;
  • 子类抛出的异样类型要小于或者等于父类抛出的异样类型;

办法重载

在一个类中存在两个或者两个以上的同名函数, 称作为办法重载,函数名要统一,形参列表不统一(形参的个数或形参的类型不统一)。

6、包与权限

权限修饰符

权限修饰符就是管制被润饰的成员的范畴可见性,分为:public、private、protected、default(没有润饰)。在不同包上面只有 public 与 protected 能够拜访,而且 protected 必须是在继承关系下才可能拜访。

包 package

包能够了解为计算机系统中的文件夹,用来解决类名反复产生抵触的问题,包名全副小写,语句必须位于 java 文件中中第一个语句。

二、基本特征

封装

把类中外部的实现细节进行暗藏,只裸露对外的接口,例如理论开发场景中个别实体类的所有成员属性(成员变量)都要封装起来,能够被认为是一个爱护屏障,避免该类的代码和数据被外部类定义的代码随机拜访,适当的封装能够让程序代码更容易了解与保护,增强安全性。

继承

在现有父类的根底上在从新构建一个新类即子类,通过子类对象能够拜访父类非公有的成员变量和成员办法,以及重写父类中的非公有成员办法,继承的作用就是能进步代码的复用性。

多态

多态指一个对象能够具备多种状态,例如:父类的援用类型变量指向了子类的对象;接口的援用类型变量指向了接口实现类的对象;这种状况是存在于继承或者实现关系中,多态状况下,子父类存在同名的成员变量时,拜访的都是父类的成员,除了在同名非动态函数时才是拜访子类的。

三、罕用关键字

1、This 关键字

this 关键字代表了所属函数的调用者对象,如果存在同名成员变量与局部变量时,在办法外部默认是拜访局部变量的数据,能够通过 this 关键字指定拜访成员变量的数据,在一个构造函数中能够调用另外一个构造函数初始化对象。

2、Static 关键字

static 润饰成员变量:如果有数据须要被共享给所有对象应用时,那么就能够应用 static 润饰。

static 润饰成员函数:该静态方法不依赖于任何对象就能够进行拜访,非动态成员办法 / 变量都必须依赖具体的对象才可能被调用。

static 润饰代码块:static 关键字用来包装动态代码块以晋升程序性能,动态代码块能够置于类中的任何中央,在类首次被加载的时候,会顺次执行一次每个动态代码块。

3、Super 关键字

super 关键字代表了父类空间的援用,子父类存在着同名的成员时,在子类中默认是拜访子类的成员,能够通过 super 关键字指定拜访父类的成员;创立子类对象时,默认会先调用父类无参的构造方法,能够通过 super 关键字指定调用父类的构造方法。

4、Instanceof 关键字

instanceof 关键字的作用:判断一个对象是否属于指定的类别,对象与指定的类别必须要存在继承或者实现的关系。在强制类型转换之前通常会应用该关键字先判断,而后在进行转换。

5、Final 关键字

final 润饰类:表明该类不能被继承,final 类中的成员变量能够依据须要设为 final,然而要留神 final 类中的所有成员办法都会被隐式地指定为 final 办法。

final 润饰办法:锁定办法避免任何继承类批改它的含意;第二个起因是效率,父类的 final 办法是不能被子类所笼罩的。

final 润饰变量:成员变量被标识为常量,只能被赋值一次,赋值后值不再扭转,当函数的参数类型申明为 final 时,阐明该参数是只读型的。

6、Abstract 关键字

abstract 润饰类:该抽象类不能被实例化,抽象类与接口的不同之处,接口中不能有实例办法去实现业务逻辑,而抽象类中能够有实例办法,并实现业务逻辑,抽象类不能应用 final 关键字润饰,因为 final 润饰的类是无奈被继承,而对于抽象类来说就是须要通过继承去实现形象办法。

abstract 润饰办法:形象办法没有办法主体,与接口办法有点相似,形象办法不能用 private 润饰,因为形象办法必须被子类实现,形象办法也不能用 static 润饰,抽象类. 形象办法这样的操作没有意义。

四、场景剖析

1、设计模式

面向对象与设计模式是之前几年很炽热的概念,面试时必问的问题,在编程中想用好设计模式,前提了解面向对象机制,都是对问题的高度向上形象封装,向下逐层解决实现,进步代码的复用性、可读性、灵活性、可维护性强,最次要是格调高。

2、IO 流体系

如果想了解面向对象和设计模式的代码,在 Java 中能够重点读读 IO 流体系的 API,顶级接口,向下实现,包装类,扩大类,是真的把这两大理念用到极致了,当然 IO 流最为文件解决的外围,也值得读读源码。

3、MVC 开发模式

在 MVC 的开发模式中,业务层接口,业务层实现;数据库接口,数据拜访实现,也是面向对象的最根底用法接口与接口的实现类。

五、源代码地址

GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile

举荐浏览:编程体系整顿

序号 项目名称 GitHub 地址 GitEE 地址 举荐指数
01 Java 形容设计模式, 算法, 数据结构 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
02 Java 根底、并发、面向对象、Web 开发 GitHub·点这里 GitEE·点这里 ☆☆☆☆
03 SpringCloud 微服务根底组件案例详解 GitHub·点这里 GitEE·点这里 ☆☆☆
04 SpringCloud 微服务架构实战综合案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
05 SpringBoot 框架根底利用入门到进阶 GitHub·点这里 GitEE·点这里 ☆☆☆☆
06 SpringBoot 框架整合开发罕用中间件 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
07 数据管理、分布式、架构设计根底案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
08 大数据系列、存储、组件、计算等框架 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
退出移动版