1 封装
1.1 封装的概念
面向对象程序三大特性:封装、继承、多态
为什么要封装 ? 安全考虑
封装 : 将类的实现细节隐藏 ,对外只提供一些开放的接口
1.2 访问限定符
private修饰的方法 成员变量 构造方法 只能在当前类中使用
class Cat1 {
private String name;//名字
private int age;//年龄
private String color; //颜色
public Cat1(String name, int age, String color) {
this.name = name;
this.age = age;
this.color = color;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setColor(String color) {
this.color = color;
}
public int getAge() {
return age;
}
public String getColor() {
return color;
}
@Override
public String toString() {
return "Cat1{" +
"name='" + name + '\'' +
", age=" + age +
", color='" + color + '\'' +
'}';
}
}
public class Test2 {
public static void main(String[] args) {
Cat1 cat2 = new Cat1("墩墩", 1, "白灰");
String ret = cat2.toString();
System.out.println(ret);
}
}
2.包
在面向对象体系中,提出了一个软件包的概念,即: 为了更好的管理类,把多个类收集在一起成为一组,称为软件 包 。
2.1 自定义包
a. 在 IDEA 中先新建一个包: 右键 src -> 新建 -> 包
b. 在弹出的对话框中输入包名
c. 在包中创建类, 右键包名 -> 新建 -> 类, 然后输入类名即可.
d.idea就帮我们创建好了
e.Test.java 第一行会出现 package com.bit.deom1;
2.2 常见的包
1. java.lang: 系统常用基础类 (String 、 Object), 此包从 JDK1.1 后自动导入。2. java.lang.reflect:java 反射编程包 ;3. java.net: 进行网络编程开发包。4. java.sql: 进行数据库开发的支持包。5. java.util: 是 java 提供的工具程序包。 ( 集合类等 ) 非常重要6. java.io:I/O 编程开发包。
3 static成员
在 Java 中,被 static 修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对 象,是所有对象所共享的 。
被static修饰的成员变量 不属于对象 所以也不依赖对象 属于类
不能通过对象的引用来访问
public class Student {
private String name;
private int age;
static public String classname;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public static void main(String[] args) {
Student stu = new Student("张三", 20);
Student.classname = "1-304";
}
}
3.1 static修饰成员变量
static 修饰的成员变量,称为静态成员变量 ,静态成员变量最大的特性: 不属于某个具体的对象,是所有对象所共 享的 。
【静态成员变量特性】
1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问3. 类变量存储在方法区当中4. 生命周期伴随类的一生 ( 即:随类的加载而创建,随类的卸载而销毁 )
3.2 static修饰成员方法
Java 中, 被 static 修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的 。静态成员一般是通过静态方法来访问的。
【
静态方法特性
】
1. 不属于某个具体的对象,是类方法2. 可以通过对象调用,也可以通过类名 . 静态方法名 (...) 方式调用,更推荐使用后者3. 不能在静态方法中访问任何非静态成员变量4. 静态方法中不能调用任何非静态方法,因为非静态方法有 this 参数,在静态方法中调用时候无法传递 this 引用
3.3 static成员变量初始化
注意:静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性
静态成员变量的初始化分为两种:就地初始化 和 静态代码块初始化 。
1.
就地初始化
就地初始化指的是:在定义时直接给出初始值
4. 代码块
4.1 代码块概念以及分类
使用 {} 定义的一段代码称为代码块 。
根据代码块定义的位置以及关键字,又可分为以下四种:
普通代码块构造块静态块
4.2 普通代码块
普通代码块:定义在方法中的代码块
4.3 构造代码块
构造块:定义在类中的代码块 ( 不加修饰符 ) 。也叫: 实例代码块 。 构造代码块一般用于初始化实例成员变量 。
public class Student {
private String name;
private int age;
static public String classname = "3-322";
{
this.name = "zhangsan";
this.age = 20;
}
}
4.4 静态代码块
使用 static 定义的代码块称为静态代码块。 一般用于初始化静态成员变量。 //先被执行
public class Student {
private String name;
private int age;
static public String classname = "3-322";
{
this.name = "zhangsan";
this.age = 20;
}
static {
classname = "3-210";
System.out.println("静态代码块");
}
}
静态代码块不管生成多少个对象,其只会执行一次静态成员变量是类的属性,因此是在 JVM 加载类时开辟空间并初始化的如果一个类中包含多个静态代码块,在编译代码时,编译器会按照定义的先后次序依次执行 ( 合并 )实例代码块只有在创建对象时才会执行
总结 :类的成员变量
1 静态成员变量
随着类被加载而创建,类被销毁而销毁 不能是局部变量
a 属于类的,不属于对象 只有一份b 类名+点号 来访问静态成员变量
2 非静态成员变量/普通成员变量
a 属于对象,没=每实例化一个对象 都会有一个对应的静态成员变量,每个对象都有b 对应的引用 + 点号 来访问
不能在静态方法中访问任何非静态成员变量静态方法中不能调用任何非静态方法 因为非静态方法中的this参数,在静态方法调用时候无法传递this引用