第二周总结

这周学习了面向对象https://www.xiaochenblog.icu/archives/wei-ming-ming-wen-zhang-iBYKcIeQ和面向对象三特性https://www.xiaochenblog.icu/archives/wei-ming-ming-wen-zhang-z4nNsfBg

定义

类:具有相同属性和方法的对象的集合

对象:真实存在的实体,万物皆可对象

关系

类是对象的抽象,对象是类的实例化。

实体类:可new成对象真实存在的类

测试类 主类:main方法所在的类。

工具类 功能类:存放管理一类的方法

对象拥有所属类所有公开的属性和方法。

类的组成

属性:以声明变量的形式描述对象具备的特性,一般不需要赋真实值

方法:以编写方法的形式描述整个类所有对象所具备的功能

方法

定义:

将完成一定功能的代码 进行打包【封装】

不能嵌套只能调用,但是防止循环调用

本类方法调用本类其他资源可以使用this.也可以省略this.this,本类将来的对象跨类方法调用资源则需要创建对象调用(若是静态资源还可以使用类名直接调用)

四要素

方法的名和功能

方法所属的类型

方法的参数

方法的返回值

访问修饰符

只用于修饰全局变量或方法(局部资源不能访问修饰符)

public 公开的 可跨类跨包

protected 受保护的 跨类半可跨包不可跨包 为继承设计

什么都不写 默认的 可跨类不可跨包

private 私有的 不能跨类不能跨包

static 静态的

会影响修饰的代码的加载时机所在的类被使用 则static修饰的资源 立即加载 且只加载一次

静态资源的加载:只要一碰这个类的任意资源 立即加载 可以通过对象调用 还可以通过类名直接调用

静态属性

可以继续使用对象调用

可以直接使用类名调用 存储与方法区中的元数据区中

所有对象及类名共用这个属性

静态方法

可以继续使用对象调用

可以直接使用类名调用

静态方法中不能使用this关键字(因为静态资源先加载出来)

调用原则

因为静态资源先加载出来的,所以静态资源不能调用任何非静态资源

使用场景

属性:如果确实需要所有对象共享这个全局变量可以添加static

方法的重载

在同一类中

方法名相同

参数列表不相同

构造方法

定义:返回所属类的对象的方法 可以借助构造方法一边 创建对象一边给对象赋值

语法:没有返回值且不写void 方法名就是类名

注意:

任何一个类都有默认的隐式的空参构造,写了带参构造就会被覆盖

构造方法调用构造方法使用this,使用this还必须是第一句,相互调用是必须保证有出口

构造方法和普通方法也可以调用

子类调用父类的构造方法使用super关键字使用super调用必须保证父类有空参构造,即使子类没有显示调用父类构造方法依然默认调用父类空参构造

super和this不能共存

在创建子类时会在new子类时初始化父类开辟一个属于父类属性的空间

代码块

普通代码块

{ 划分一个作用域 }

静态代码块

static{ 程序一运行就要执行的业务,只执行一次}

构造代码块

每new一次对象就会执行一次构造代码块且优先于构造方法可以有多组 当new对象时从上往下全部执行

同步代码块

多线程中使用

面向对象三特性

封装

打包

属性的封装

原因:公开的属性既可以访问也可以修改,不利于控制

操作:私有化属性,根据情况提供get、set方法

标准实体类

1.属性私有化

2.空参构造多参构造 根据参数从少到多

3.根据需求 编写属性的get set方法

4.编写toString()

继承extends

从无数的对象中提出共有的属性和方法--------第一次抽象---》自定义类

再从多个实体类中提出共有的属性和方法-------第二次抽象-----》父类

注意:java继承遵循单继承原则:一个子类只有一个父类,一个父类可以拥有多个子类。

重写

存在继承关系,子类与父类的方法名相同,参数列表相同,方法体不同

多态