一、构造方法
构造方法是一种特殊的方法,与一般的方法不同是:
1.构造方法的名字必须与定义他的类名完全相同,没有返回类型,甚至连void也没有。
2.构造方法的调用是在创建一个对象时使用new操作进行的。构造方法的作用是初始化对象。
3、不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承。
无参构造方法
构造方法可以被重载。没有参数的构造方法称为默认构造方法,与一般的方法一样,构造方法可以进行任何活动,但是经常将他设计为进行各种初始化活动,比如初始化对象的属性。
当自己写出有参构造方法时,不再给出默认的无参构造方法。
它的特殊性反映在如下几个方面:
(1)构造方法名与类名相同.
(2)构造方法不返回任何值,也没有返回类型,也不写void.
(3)每个类可以有零个或多个构造方法.
(4)构造方法在创建对象时自动执行,一般不能显式地直接调用.
具体作用(构造方法一旦执行)
在堆中开启空间,分配地址值
属性和方法初始化
对象创建成功,将地址赋值给变量(对象名)
有参构造方法
在创建对象时,调用有参构造方法,方法内部有对属性赋值的过程,所以有参构造创建出的对象的属性是指定值
有参构造和无参构造的区别:
相同点:都能够创建对象
不同点:无参构造创建出的对象属性值都是默认值;有参构造创建出的对象属性值是指定值
两者都是创建对象,只是不同的效果,看情况选择
二、局部变量
/*
* 局部变量
* 1、方法声明的和方法体内
* 2、只能在方法内部使用
* 3、局部变量使用前需要主动赋值
* 4、在栈的栈帧中
* 5、随着方法的进栈而进栈,方法出栈则消失
* */
成员变量
/*
* 成员变量/成员属性 是对象的
* 1、类中方法外
* 2、类中的所有方法都可以使用
* 3、成员变量会随着创建对象被赋予默认值(不用主动考虑默认值)
* 4、在内存的堆中
* 5、在对象创建时出现并初始化,失去引用后,会被gc处理(垃圾回收机制)
* */
三、重载
⽅法重载:在⼀个类中的出现同名⽅法称之为⽅法的重载
⽅法重载的要求:
1、同名不同参(参数类型、个数、顺序)
2、与返回值,访问修饰符⽆关
调⽤重载的⽅法会根据传递的参数不同,去执⾏不同的⽅法
重载的好处:⽅便、灵活、屏蔽使⽤差异
四、封装
类的封装:将代码封装在一个类中,隐藏一些代码实现的逻辑,对外提供与一个公共的访问方式。
外部使用getter()、setter()方法访问
五、创建对象的过程
new Student(); 或者 new Student(int age,String name);
在堆中开辟空间,分配地址值
属性和方法初始化默认值
执行构造方法内部的代码
对象创建成功,将地址值赋值给变量(对象名)
六、重写(override)
重写是发生在继承中,子父类中
重写要求子类重写父类方法
要求:访问修饰符,返回值类型,方法名,参数列表完全和父类一致(子类访问修饰符可以 >= 父类)
一般重写后,子类的方法上都会有一个@Override
@Override // 重写标记,告诉程序这个方法是重写父类的
public void xxx(){
System.out.println("xxx");
}
七、访问修饰符
访问修饰符,也叫做访问限定符,访问控制符,其实就是控制权限控制着类,属性,方法以及构造方法的访问权限(在不同的位置能不能使用)访问修饰符有4个: public , protected , 缺省(默认) , private |
当前类 | 当前包其他类 | 不同包的子类 | 不同包非子类 | |
public | √ | √ | √ | √ |
protected | √ | √ | 自己调用自己的属性不行; 子类对象可以调用 | × |
默认(package) | √ | √ | × | × |
private | √ | × | × | × |
访问修饰符可访问的范围: public > protected > package > private
默认访问修饰符-不使用任何关键字
使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。
接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。