JAVA小白的崛起之路(三)面向对象

JAVA小白的崛起之路(三)面向对象

三大特性:封装、继承、多态
面向对象和面向过程的区别:

​ 面向对象和面向过程的总结 :都是解决问题的思维方式,都是代码组织的方式。 解决简单问题可以使用面向过程 解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。

面向对象思考方式:
遇到复杂问题,先从问题中找名词,然后确立这些名词哪些可以作为类,再根据问 题需求确定的类的属性和方法,确定类之间的关系。

类、对象:

1、类中预备好了空间可以存储数据,创建对象之后,真的有空间了,能存储数据了

2、每一个对象都有自己独立的空间,存储自己的属性,和别的对象没关系

3、对象所用的方法都是同一块代码,所以大家是共用的

构造器 | 构造方法|构造函数

要创建对象,一定会走构造器。利用构造器的这个特点,我们可以通过构造器给对象赋初始值。

Java通过new关键字来调用构造器

在每一个类中都存在至少一个特殊的方法,构造方法

1、形式

​ 方法名和类名一致 && 没有返回值

2、作用|调用时机

​ 构造方法会在new的时候(创建对象的时候)自动被系统调用

3、每一个类都有构造器

​ 如果没有手动给,系统会在编译的时候自动给一个空构造

​ 如果手动给了,系统将不再给

this关键字

基本含义:当前对象

普通方法中,this总是指向调用该方法的对象。
构造方法中,this总是指向正要初始化的对象。

this最常的用法:

  • 让类中的一个方法,访问该类的另一个方法(this.方法名())或属性(this.属性 名)。访问属性更常用,用来区分同名的形参和属性。

  • 使用this关键字调用重载构造方法。避免写相同的初始化代码,只能在构造方法 中用,并且必须位于构造方法的第一句。

super关键字

super 是直接父类对象的引用。可以通过 super 来访问父类中被子类覆盖的方法 或属性。

访问构造器的特点:
第一行,构造器中,不能形成闭合的环。在没有显示通过super调用父类构造器 时,一定会在子类构造器的入口默认调用一个无参构造 suepr() , 如果父类中没有 提供无参构造,子类必须手动调用父类的带参构造 suepr(实参列表);

任何类的构造函数中,若是构造函数的第一行代码没有显式的调用 super(…);那么Java默认都会调用super();作为父类的初始化函数

static 关键字

static属性: 属性被所有对象共享; 这个属性先于对象存在的
static 方法:这个方法先于对象存在

用static声明的成员变量为静态成员变量.

  • 它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式 初始化,
  • 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共 享!!

用static声明的方法为静态方法

  • 不需要对象,就可以调用( 类名.方法名() )
  • 在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非 static的成员也;不可以出现this关键字
final 关键字
  • 修饰变量 :被他修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。

  • 修饰成员变量 :成员变量必须要赋值

  • 修饰局部变量 :
    常量要进行初始化,如果采用系统默认值的话,就失去了存在的意义。
    因此必须显式初始化,可以直接赋值或初始化块中或构造函数中。
    但只能赋值一次!

  • final修饰的是引用变量时只是引用值不能改变。对应的对象内部的属性仍然可变。
    修饰方法: 该方法不可被子类重写。但是可以被重载

接口 interface

如果一个类中所有的方法都不能满足子类的需求,但是子类都必须有,这个类就被完全抽象了,完全抽象类,接口,接口只是提供标准,不提供任何的实现

接口可以多实现

封装

​ 需要让用户知道的暴露出来,不需要让用户了解的全部隐藏起来。这就是封装。

JavaBean对象

JavaBean就是一个简单的java类,用来存储基本的信息,一般和数据库的表对应
规范:
1、提供公开的构造器(至少存在一个无参的,带参的)
2、属性私有化
3、为私有化的属性提供对应set/get方法(设定器/访问器),方法应该是公开的, 名字按规范来

继承

​ 使用extends关键字进行实现继承

​ 子类继承父类,可以得到父类的全部属性和方法 (除了父类的构造方法)。
java中只有单继承

权限修饰符:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fIyKWnHw-1604930473284)(面向对象(三).assets/1.png)]

多态

一种事物的多种形态

block

普通语句块 : 普通代码块就是我们平常所说的方法中的方法体

构造块 : 构造代码块是由来个大括号包裹起来的代码块,其语法结构如下:

{
...
...
}

静态块 :静态代码块是由static{}包裹起来的代码片段,其语法结构如法:

staic{
…………
…………
}

同步块: 同步代码块是由synchronized(){}包裹起来的代码块,其语法结构如下:

synchronized(){
…………
…………
}

区别

  • 静态代码块可以有多个,在类加载的时候最先执行,并且只执行一次,可以用来记录类加载的时机
  • 构造代码块在静态代码块之后执行,在构造方法之前执行,并且,构造代码块可以执行多次,只要构造方法执行一次,构造代码块也会跟随执行一次。
  • 静态代码块和动态代码块都存在于类中,不能存在于方法体内
  • 静态代码块 先于构造代码块 先于构造方法执行
  • 静态代码块 先于普通代码块 先于构造方法执行
开闭原则

对修改关闭,对扩展开放。在软件的生命周期内,因为变化,升级和维护等原因需 要对软件原有代码进行修改,可能会给旧代码引入错误,也有可能会使我们不得不 对整个功能进行重构,并且需要原有代码经过重新测试。解决方案:当软件需要变 化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实 现。不过这要求,我们要对需求的变更有前瞻性和预见性。其实只要遵循前面5中 设计模式,设计出来的软件就是符合开闭原则的。

java8新特性:

​ Lambda : 简化匿名内部类
​ 函数式接口: 4大
​ 方法引用: 简化Lambda
​ 时间日期API
体的行为来实现变化,而不是通过修改已有的代码来实 现。不过这要求,我们要对需求的变更有前瞻性和预见性。其实只要遵循前面5中 设计模式,设计出来的软件就是符合开闭原则的。

java8新特性:

​ Lambda : 简化匿名内部类
​ 函数式接口: 4大
​ 方法引用: 简化Lambda
​ 时间日期API
​ Stream/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值