day10封装、static、this、包机制

1. 面向对象
1.1 传值和传引用
// 基本数据类型 保存值的大小 , 引用数据类型保存内存地址
// 传值 基本类型传递
// 局部变量 属于栈帧私有化 栈帧独享

1.2 区分成员和构造

  • 构造方法 :
  •  	[权限修饰符]  类名(参数) {方法体}
    
  • 作用 : 创建对象,初始化成员属性
  • 方法声明 : [修饰符列表] 返回值类型 方法名(参数) {方法体}
  • 方法名符合命名规则即可 : 字母,下划线,美元符号,数字,不能数字开头,不能使用关键字和保留字,建议望文知义, 驼峰命名法
  • 方法目的 : 代码重用性,提高代码效率
  • 问题
  •  1 成员方法的方法名可以和类名相同吗?(成员方法可以和构造方法同名吗?)
    
  •  		可以和类名相同
    
  •  2 如何区分同名的成员方法和构造方法?
    
  •  		看返回值,构造方法木有返回值,成员方法必须有返回值类型,如果没有用void表示
    

1.3 This
1.3.1 是什么

  •  		this是每个对象中,保存自身内存地址的一个引用类型的成员变量
    
  •  		所以说,this就表示对象自己,相当于我们说 "我" 一样
    

1.3.2 能干什么

  •  this能干什么?
    
  •  		1 在成员/构造方法中,能够区分同名的局部变量和成员变量
    
  •  		2 在构造方法中,也可以用于重载调用当前类中其他的构造方法(必须在第一行)
    
  •  		3 return this 返回当前对象内存地址,可以做到链式调用
    

1.3.3 怎么用
1.3.3.1 区分局部变量和成员变量

1.3.3.2 重载调用构造方法

  • this重载调用当前类的其他构造方法
  •   必须出现在构造方法第一行
    
  • 语法 :
  •  	this(参数);
    

1.3.3.3 链式调用

  • 链式调用 : xxx.方法().方法().方法()…
  • 核心点 : 前者方法返回值一定是可以调用后者方法的 引用

1.3.4 注意
This不能出现在静态上下文中

1.4 Static
1.4.1 是什么

static是一个修饰符关键字,用来区别静态和动态属性
1.4.2 能干什么

  • static修饰符
  •  1 static修饰的类体中的变量是静态变量
    
  •  2 static修饰的方法是静态方法
    
  •  3 static修饰的语句块是静态语句块
    

1.4.3 怎么用

  • static修饰符 1 static修饰的类体中的变量是静态变量 2 static修饰的方法是静态方法 3 static修饰的语句块是静态语句块
  • 语法 : static { java代码; }
  • 静态语句块是在类加载阶段执行,并且只执行一次,并且是从上往下执行
  • 静态变量也是在类加载阶段初始化,并且和静态语句块没有优先级之分,从上向下执行初/初始化,所以 不能再静态语句块中 提前使用静态变量,而在方法中是可以的
  • 什么情况下 类加载 : 访问某个类的静态属性的时候,类加载

1.4.4 实例语句块

  • 实例语句块
  •  语法 : {
    
  •  			java代码;
    
  •  		}		
    
  •  实例语句块等同于成员方法,只是没有名字
    
  • 执行顺序 : 静态语句块 > main方法 > 实例语句块(需要new对象 才会执行)

1.4.5 静态调用

  • 静态调用,使用类名调用
  • 那么可以使用对象调用吗? 可以

1.4.6 静态和成员的区别及应用场景

  • 变量分类 :
  •  	静态变量 : 类中使用static修饰
    
  •  	成员变量 : 类中非static修饰
    
  •  	局部变量 : 方法中声明的变量是局部变量,作用域让当前方法使用
    
  • 初始化时机 :
  •  静态变量 : 类加载阶段初始化
    
  •  成员变量 : 创建对象的时候初始化(构造方法)
    
  • 应用场景 :
  •  静态变量 : 类级别的,是所有对象共享的,比如一个静态变量 age = 10 ,那么说明所有对象都有这个age属性,并且值都是18
    
  •  				所有对象共有的属性和值
    
  •  成员变量 : 对象和对象之间有相同的属性,但是可能有不同的值,非对象共享
    

1.5 封装

封装是把对象的所有组成部分组合在一起,封装使用访问控制符将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。
作用
适当的封装可以让代码更容易理解和维护,也加强了代码的安全性。

1.5.1 软件包机制
1.5.1.1 Package

  • 目标 : 当前文件的编译和运行
  • 软件包机制 :
  •  1 为了解决类的命名冲突问题
    
  •  2 在java中使用package语句定义包
    
  •  3 package语句只能出现在java源文件中的第一行
    
  •  4 包命名通常采用公司域名倒叙
    
  •  5 package限制的是class文件的放置位置(编译之后,把class文件放到哪里去)
    
  •  com.tledu.oa.system
    
  •  	以上包命名可以体现出来 : 这个项目是天亮教育开发的OA项目,当前处于OA项目中的system模块
    
  •  6 完整的类名 是带有包名的
    
  •  7 带有包名的文件,编译应该是这样
    
  •  		javac -d 生成路径  java源文件路径
    
  •  		javac -d ./ -encoding utf-8 _01_Package.java
    
  •  8 运行
    
  •  	java 包名.类名
    
  • 什么是文件名 : 能够找到这个文件的全路径

1.5.1.2 Import

// 导入单个类
//import _05_Package.com.B;
//import _05_Package.com.C;

import java.util.Date;

// 导入该包下所有类
import _05_Package.com.*;

// 导入该类中所有的静态属性(静态变量/静态方法),让当前类可以不加前缀,直接调用
import static _05_Package.com.B.*;
/**

  • import :
  •  1 引入其他需要的类
    
  •  2 只能出现在package语句执行,class语句之上
    
  •  3 java核心类不需要导入,可以直接用,其他都不行
    
  •  		java.lang
    
  • 语法 :
  •  import   包名.类名;   导入单个类
    
  •  import   包名.*;   导入该包下所有的类
    
  • 注意 : eclipse编程过程中,按空格的时候 会自动导包,如果程序没问题,但是报错,可以查看是不是包导错了
  • 导入该类中所有的静态属性(静态变量/静态方法),让当前类可以不加前缀,直接调用
  •  	import static _05_Package.com.B.*;
    
  •  	不建议这样使用,在当前类中,不容看出来,这个变量是谁的变量 
    

1.5.2 权限修饰符

  • private 私有化权限修饰符 ,除了自己(当前类)之外,都不能访问
  • public 公共的权限修饰符 , 谁都能访问
  • 不写权限修饰符的时候 : 要么当前类中使用,要么当前包中使用
  • protected 受保护的权限修饰符 , 要么同类,要么同包,要么有继承关系
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值