6.封装
6.1 什么是封装?
对于一部手机来说,用户只需要使用它,并不需要知道它的内部结构,那么把手机套外壳就是封装
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行 交互
6.2访问限定符
Java中提供了四种访问限定符
protected:主要是用在继承中,继承部分详细介绍
default:什么都不写时的默认权限
public:可以被任何其他类访问
private:只能在本类中使用
注意:default只能在本包中使用
6.3封装扩展之包
6.3.1什么是包
为了更好的管理类,把多个类收集在一起成为一组,称为软件包。
比如把不同的歌曲放在不同的文件夹内
值得一提的是:在同一个工程中允许存在相同名称的类,只要处在 不同的包中即可
6.3.2导入包中的类
public class Test1 {
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6};
System.out.println(Arrays.toString(array));
}
}
比如我要打印一个字符串
import java.util.Arrays;
使用 import语句导入包
import后接的就是文件的路径
如果需要使用 java.util 中的其他类, 可以使用 import java.util.*
*为通配符,带上这个可以使用该路径下所有的包
但是我们更建议显式的指定要导入的类名. 否则还是容易出现冲突的情况
在存在俩个相同类名的情况下需要输入完整的类名。
可以使用import static导入包中静态的方法和字段。
int sum = (int) Math.sqrt(Math.pow(x,2) + Math.pow(y,2));
比如我要打印这个要导入这个包
import java.lang.Math.*;
使用import static
import static java.lang.Math.*;
就可以不用输入前缀
int sum = (int) sqrt(pow(x,2) + pow(y,2));
6.3.3 自定义包
右键src
一般包名写成小驼峰的形式
结果就是这样的
如果不是这种情况就点击右上角的小齿轮
同时在文件夹中也能找到这里就不赘述
7.Static
7.1Static修饰成员变量的特性
static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。
1.访问形式:可以通过对象的引用访问,也可以通过类名访问,不需要初始化(推荐使用类名来访问)
public class Student {
public static String StudentClassroom;
}
2.不存在于堆栈,存在于方法区
3:随类的加载而创建,随类的卸载而销毁
比如下面的这个代码 设置count的初始值为100,创建多个对象之后count++的结果依然是103,这也说明了Static修饰的变量都存在于方法区
7.2Static修饰成员方法的特性
1.不属于某个具体的对象,属于类方法
2.访问形式和上面相同,可以通过对象调用或者类名,同样推荐使用后者
3.不能在静态方法中访问任何非静态成员变量
4.静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用
通常成员变量用private修饰,那就要通过静态方法来获取成员变量
public class Student {
private static String classroom = "122";
public static String getClassroom(){
return classroom;
}
}
8.代码块
8.1 代码块概念以及分类
使用 {} 定义的一段代码称为代码块
分为以下四种:
普通代码块 构造块 静态块 同步代码块
8.2普通代码块
public class Test {
public static void main(String[] args) {
{
int x = 100;
System.out.println(x);
}
}
8.3构造代码块
构造代码块一般用于初始化实例成员变量
public class people {
private String name;
private String sex;
private int age;
{
this.name = "hhx";
this.sex = "woman";
this.age = 20;
}
public void show(){
System.out.println(" name: " + name + " sex: " + sex + " age: " + age);
}
}
8.4静态代码块
使用Static修饰的代码块叫做静态块,用来初始化静态成员变量
public class people {
private String name;
private String sex;
private int age;
private static String girlname;
private static int girlage;
{
this.name = "hhx";
this.sex = "woman";
this.age = 20;
}
public void show(){
System.out.println(" name: " + name + " sex: " + sex + " age: " + age);
}
public people(){
System.out.println("hhx is bro");
}
static{
girlname = "hhxhhxhhxhhx";
girlage = 20;
System.out.println("hhx is sister");
}
}
注意:
静态代码块不管生成多少个对象,其只会执行一次
静态成员变量是类的属性,因此是在JVM加载类时开辟空间并初始化的
如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行(合并)
实例代码块只有在创建对象时才会执行
由此可见执行顺序静态代码块 > 构造代码块
第一次写若有不足请及时指正