修饰符:
类的访问修饰符:
public修饰符:公有访问级别(在同一个类中,被不同修饰符修饰的属性或者方法,对象都可以直接使用)
protected修饰符:被protected修饰的属性或方法不能被不同包里的类直接访问
默认修饰符:包级私有访问级别(被默认修饰符修饰的类只能被同一个包里的其它类访问)
private修饰符:被private修饰的属性或方法,只能在其所在的类里直接使用
注意:
一个Java文件里只能有一个public修饰的类,可以有多个默认修饰符修饰的类
private修饰符:(使用于封装)
只能在类里面使用,被private修饰符修饰后,要想使用该类里的方法需要通过提供的方法(接口)使用
static修饰符:
static变量的作用:
(1)能被类的所有实例共享,可作为实
例之间进行交流的共享数据
(2)如果类的所有实例都包含-一个相同
的常量属性,可把这个属性定义为静
态常:量类型,从而节省内存空间
static方法:
静态方法:可直接通过类名访问
■静态方法中不能使用this和super
■不能直接访问所属类的实例变量和实例方法
■可直接访问类的静态变量和静态方法
实例方法:通过实例访问
■可直接访问所属类的静态变量、静态方法、实例变量和 实例方法
静态方法必须被实现 main()就是最常用的静态方法 ( 必须被实现:指的是必须有方法体)
在静态方法中不能使用this和super关键字,因为static是属于类的,不是属于某一个对象
static修饰符:
static可以用来修饰
成员变量:
静态变量,可以直接通过类名访问
成员方法:
静态方法,可以直接通过类名访问
代码块:
静态代码块,当Java虚拟机加载类时,就会执行该代码块
static代码块:
JVM加载类时,加载静态代码块
1)如果有多个静态块,按顺序加载
2)每个静态代码块只会被执行一次
类的成员变量包括:
■类变量(静态变量)
●被static修饰的变量
●在内存中只有一个拷贝
●类内部,可在任何方法内直接访问静态变量
●其他类中,可以直接通过类名访问
■实例变量
●没有被static修饰的变量
●每创建一个实例,就会为实例变量分配一次内存 ,实例变量可以在内存中有多个拷贝,互不影响
总结:
综上所述:静态的只能访问静态的(变量、方法) ;
非静态的既可以访问静态的也可以访问非静态的(变量、方法)
代码例题:
类:
package cn.bdqn.demo11;
public class FinalStaticDemo01 {
//定义常量
final int NUM = 100;
//常量值不能修改
// NUM=200;
//定义静态常量
final static int NUMBER = 100;
static final int TEST = 200;
public static void main(String[] args) {
System.out.println(FinalStaticDemo01.NUMBER);
System.out.println(FinalStaticDemo01.TEST);
System.out.println(Math.PI);
}
}
对象:
package cn.bdqn.demo10;
public class Demo01 {
//定义变量
//没有使用static使用的变量称之为实例变量
int num1 =100;
//使用static修饰的变量称之为类变量/静态变量,静态变量可以直接使用类名来调用
static int num2 =1000;
public static void main(String[] args) {
//实例变量只属于其所在的对象,各个对象之间不影响
Demo01 d1= new Demo01();
System.out.println(d1.num1);//100
d1.num1 = 200;
System.out.println(d1.num1);//200
System.out.println(d1.num2);//1000
d1.num2 = 2000;
System.out.println(d1.num2);//2000
Demo01 d2 = new Demo01();
System.out.println(d2.num1);//100
d2.num1 = 500;
System.out.println(d2.num1);//500
//使用static修饰的变量被对多个对象公用,一个对象对变量进行操作会影响另一个对象使用该数据
System.out.println(d2.num2);//2000
}
}
set、get方法:
在封装中要使用set、get方法留可供使用的方法(类似手机留接口,可以插数据线、耳机等)