组成
1:成员变量
- 1)类的属性
- 2)存储在堆中
- 3)生命周期与对象同步
- 4)有默认初始化值
2:匿名对象 new user();
3:关键字
private:
- 修饰:成员变量和成员方法
- 权限: 本类
default:
- 权限:本类+同一个包下的类
prodect:
- 权限:本类+同一个包下的类+不同包下的子类
public:
- 权限:本类+同一个包下的类+不同包下的子类+不同包下的无关类
final:
特点:不够改变的
- 1)它修饰的类,不能被继承。
- 2)它修饰的方法,不能被重写。
- 3)它修饰的变量,是一个常量。
- 4)在局部变量的使用
a:基本类型 值不能发生改变
b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的 - 5)只能初始化化一次,要么在定义成员变量的时候给值,要么在使用前给值,但是都在构造初始化完成前完成赋值;
没有初始化报错;
this:
特点:1)本类对象的应用
- 2)this.成员变量,this.成员方法,this(参数列表) 构造方法
super:
特点:
- 1)父类存储空间标识
- 2)super.成员变量,super.成员方法,super(参数列表) 构造方法
static:
修饰:成员变量,成员方法,类
特点:
- 1)随着类的加载而加载
- 2)优先于对象对象存在
- 3)被static修饰的成员变量,被所有对象共享
- 4)被所有对象共享的原因:存储在方法区的静态区,静态区被所有成员变量共享
- 5)在静态方法中没有this对象
- 6)只能静态访问静态
代表当前类的引用对象,哪个对象调用方法,该方法内部的this就代表那个对象
4:构造方法
作用:对象的数据进行初始化
特点:
- 1)方法名与类名相同
2)修饰符 +classs +类名(参数列表){
没有返回值;
}
3):我们没写构造方法,系统将提供一个默认的无参构造方法,
如果我们给出了构造方法,系统将不再提供默认构造方法.
public class Test {
public Test() {
super();
}
5:代码块:
局部代码块:在方法中{}包起来的代码.
构造代码块
在类成员变量位置
每个构造方法执行前,首先执行构造代码块。- 静态代码块
在类成员变量位置
对类的数据进行初始化,仅仅只执行一次。随着类的加载而加载
(3)静态代码块,构造代码块,构造方法的顺序问题?
静态代码块 > 构造代码块 > 构造方法
public class Test {
//构造方法
public Test() {
super();
int a = 3;
System.out.println(a);
}
// 构造代码块
{
int a = 2;// 等等很多代码
System.out.println(a);
}
// 静态代码块
static{
int a = 1;// 等等很多代码
System.out.println(a);
}
public static void main(String[] args) {
// 局部代码块
{
int a = 0;// 等等很多代码
System.out.println(a);
Test test=new Test();
}
User user = new User();
user.setName("李四");
}
}
输出:
1
0
2
3
6:创建一个对象都做了程序都做了什么;执行顺序如下
public static void main(String[] args) {
User user = new User();
user.setName("李四");
}
- 1)在栈中申请内存user
- 2)在堆中申请内存new User();
- 3):为类的成员变量默认初始化:id=0;Name=null;
- 4):为类的成员变量显示初始化:name=李四;
- 5):通过类构成器初始化;
- 6):初始化后将地址值给对象引用user
7:修饰符
分类:
权限修饰符:private,默认,protected,public
状态修饰符:static,final
抽象修饰符:abstract
常见的类及其组成的修饰
类:默认,public,final,abstract
成员变量: private,默认,protected,public,static,final
构造方法: private,默认,protected,public
成员方法: private,默认,protected,public,static,final,abstract