一,面向对象的三大特征
封装,继承,多态。
二,类
类 = 成员变量 + 方法
或
类 = 属性 + 动作
三,类和对象
1,类是对象的抽象
2,对象是类的具体
四,对象的创建和使用
1,使用new关键字创建一个对象
2,一个类可以创建多个对象,实例(成员)变量只属于当前对象
3,可以定义和系统类重名的类
4,在实例变量或局部变量可以使用自定义类型
五,实例变量与局部变量
1,位置
实例变量:在方法体外,类体内定义的变量
局部变量:定义在方法体内
2,使用
实例变量:有默认值,无需赋值
局部变量:必需先声明,后赋值,再使用
3,实例变量默认值
a,基本数据类型
byte,short,int,long : 0
char: \u0000
float,double:0.0
boolean:false
b,引用数据类型
null
六,成员方法
1,没有static关键字修饰的方法叫成员方法
2,对象名.方法名调用成员方法
3,成员方法,无论变量是静态亦或是实例,都可以访问
七,构造方法(构造器)
1,作用
a,可以实例化对象
b,可以将对象的属性值进行初始化操作
c,可以将实例对象要做的事,写在构造方法中
2,使用时注意事项
a,名称必须和类名一致(包括大小写)
b,没有返回类型,也不用void修饰
c,每个类至少有一个构造方法,若我们没有显式声明,
那么系统会自动提供一个无参的。
d,若显式声明了有参的构造方法,就不会提供默认的无参构造方法
如果还需调用无参的,则需要我们手动再声明一个无参构造了
e,一个类可以有多个重载的构造方法
f,构造方法不能随意调用,只能写在new关键字后面,
由系统来调用,而且只会调用一次
八,方法参数的传递
1,基本数据类型传递的是值
2,引用数据类型传递的是内存地址
例:
将俩个int数用方法交换,不会交换
将俩个String的进行交换,会改变
九,this
1,指当前对象
2,使用场景
a,通过this调用构造方法,如果使用this调用构造方法,
那么this语句必须要出现在方法的第一行,否则编译报错
this(1997,1,1);
b,当局部变量和成员变量重名时,可以使用this调用指定的成员变量
十,static
1,静态变量和实例变量
a,实例变量通过 对象名.变量名 访问,存放在堆中
b, static修饰的变量为静态变量,通过 类名.静态变量名 访问
存放在方法区,和类存放在一起
c,静态变量归类所有,所有该类的对象都可以访问和修改
d,成员方法不能定义静态变量
2,静态方法
a, static修饰的方法叫做静态方法,使用 类名.静态方法名 调用
b,静态方法只能调用其它静态方法,只能访问静态变量
c,定义工具类时,可以使用静态方法
十一,代码块
1,局部代码块
在方法中出现,限定变量使用区域
2,构造代码块
在类体内,方法外出现,优先于构造方法执行
3,静态代码块
a,被static修饰的代码块叫做静态代码块,
JVM在加载类的时候会执行静态代码块,执行一次
b,在类体内,方法外出现,在类加载的时候执行,并只执行一次
public class TestStatic { public static void main(String[] args) { //局部代码块 { int a = 10; System.out.println(a); } //System.out.println(a); } //构造代码块 { } //静态代码块 static { }}
c,同步代码块
转至多线程讲解
1 package e; 2 3 public class e { 4 5 public static void main(String[] args) { 6 Son son = new Son(); 7 8 System.out.println("11.静态代码块"); 9 10 }11 12 13 }14 15 16 class Father{17 static {18 System.out.println("1.静态代码块父");19 }20 {21 System.out.println("2.构造代码块父");22 }23 public Father() {24 System.out.println("3.构造方法父");25 }26 }27 class Son extends Father{28 static {29 System.out.println("4.静态代码块子");30 }31 {32 System.out.println("5.构造代码块子");33 }34 public Son() {35 System.out.println("6.构造方法子");36 }37 }38 39 输出:40 1.静态代码块父41 4.静态代码块子42 2.构造代码块父43 3.构造方法父44 5.构造代码块子45 6.构造方法子46 11.静态代码块
十二,静态导入
鸡肋存在
十三,