Java系列课程第八天(static、this、封装、继承 )

Day08 static、this、封装、继承

1.1 传值和传引用
在这里插入图片描述在这里插入图片描述

注意 : 传引用,传递的是地址,如果地址传递到另一个地方,则拥有相同地址的变量,可以找到同一个对象,那么操作的数据也是相互的

1.2 This
1.2.1 是什么
this是每个对象中,保存当前内存地址的一个引用类型变量
this代表当前对象的意思
谁调用的当前方法,this就是谁

**1.2.2 能干什么**
在成员方法或者构造方法中,用来区分同名的局部变量和成员变量
this不能出现在静态环境下
return this;返回当前对象的内存地址,可以做到链式调用
用在构造方法中,调用当前类中重载的构造方法this(xxx),但必须在第一行

1.2.3 怎么用
this用法
在这里插入图片描述不能出现在静态上下文中
在这里插入图片描述
链式调用
在这里插入图片描述
在这里插入图片描述
1.3 Static
static 是一个修饰符,用来区别静态和成员属性
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块
静态属性是在类加载阶段执行初始化的
什么时候类加载?访问一个类的静态属性的时候把该类载入静态区

静态变量和静态方法
在这里插入图片描述
静态语句块
静态语句块等价于静态方法,只不过它没有名字,不能重复执行
自动执行,并且只执行一次,类加载完直接执行,在main方法被调用之前执行
多个静态语句块按照从上往下执行
在这里插入图片描述执行结果
在这里插入图片描述

1.3.1 静态属性调用
在这里插入图片描述
1.3.2静态和成员的区别
两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象的回收而释放
静态变量随着类的加载而存在,随着类的消失而消失

调用方式不同
成员变量只能被对象调用
静态变量可以被对象调用,还可以被类名调用

别名不同
成员变量也称为实例变量
静态变量称为类变量

数据存储位置不同
成员变量数据存储在堆内存的对象中,所以也叫对象特有数据
静态变量数据:存储在方法区(的静态区),所以也叫对象的共享数据

1.3.3 动态语句块
实例语句块语法
{
java代码;
}
等价于成员方法
而成员属性依赖对象
创建对象之后立刻执行,并且每建一个对象就执行一次
在这里插入图片描述
1.4 封装
封装就是把对象的所有组成部分组合在一起,使用权限修饰符将数据隐藏起来
控制用户对数据的不合理操作
作用:适当的封装可以让代码更容易理解和维护,也加强了代码的安全性

1.4.1 软件包机制
1.4.1.1 Package
软件包机制目标:文件的编译和运行
文件名:找到这个文件的全路径就是文件名,
1为了解决命名冲突问题(在类名之前,加前缀,package)
2java中使用package语句定义包3package规定class文件的保存位置(并不是, java源文件)
4package语句只能出现在java文件的第一行
5package命名规则一般采用公司域名倒序项目.模块
com.tledu.oa.system;是天亮公司开发的OA系统,当前是system模块
6完整的类名,是带有包名
7带有package语句的java文件编译
javac-d生成路径-encoding编码源文件路径
javac-d./-encoding utf-8 A.java
8带有package语句的class文件运行
java包名.类名
java com.tledu.zrz.A

1.4.1.2 Import
import语句:用于引入当前类中需要的其他包中的类
import语句,只能在class语句之上,package语句之下
java.lang.下面的所有类,使用不需要导入,因为java.lang是核心包
可以使用java.util.
;来导入对应包下的所有类
可以使用java.util.Date;来导入指定的类
在这里插入图片描述
在这里插入图片描述
1.4.1.3 注意
编写代码时,当我们按空格 或者是 回车的时候,会自动导包,需要注意,是否导入的正确

1.4.2 权限修饰
规定一个数据的访问范围
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.5 继承extends
1.5.1 是什么
Java中只支持单继承,不支持多继承,这样使继承关系比较简单,一个类 只有一个父类,易于程序管理,当然为了解决单继承功能变弱的问题,java又提出了接口,一个类可以实现N个接口
如果一个类,没有显示继承几个父类的话,则该类默认继承java.lang.Object
不管如何继承,最终任何类都直接/间接的成为Object的子类
Object是java提供的根类(祖宗)
Private不能被继承,但是可以通过getter/setter对私有属性进行操作
构造方法不能被继承
目的 : 代码重用
最大的功能扩展 : 方法覆写
在这里插入图片描述
1.5.2 能干什么
1 代码重用,父类进行编码之后,子类可以直接使用
2 如果父类的功能不能满足子类需求,还可以对功能进行重写
3 使用多态

1.5.3 怎么用
class 子类名 extends 父类名{
}
在这里插入图片描述在这里插入图片描述

1.6 Super
1.6.1 是什么
表示父类型特征,不是父类对象引用
This表示当前对象引用
在这里插入图片描述
1.6.2 能干什么
1用在成员方法和构造方法中可以通过super去访问父类的属性
可以通过super区别子类和父类同名的属性
2 super不能出现在静态上下文中,尽管在成员方法/构造方法中,也必须是super.xxx的形式
3用在子类构造方法中,使用super(xxx)去调用父类的构造方法
如果子类构造方法中没有显示定义this(xxx)/super(xxx)则默认第一行有个super()调用父类的无参构造
并且this(xxx)和super(xxx)这种写法,都必须出现在构造方法第一行,所以这两种写法不能同时存在

1.6.3 怎么用
在这里插入图片描述
类名 : 区分同名的局部变量和静态变量
This : 区分同名的局部变量和成员变量
Super : 区分父子类中同名的变量和方法

1.6.3.2 Super注意事项
在这里插入图片描述
1.6.3.3 调用父类的构造方法
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值