第二周总结
这周学习了面向对象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继承遵循单继承原则:一个子类只有一个父类,一个父类可以拥有多个子类。
重写
存在继承关系,子类与父类的方法名相同,参数列表相同,方法体不同
评论