面向对象(一)-封装
面向对象(一)
面向对象-封装
类声明格式
public class Student{ //访问修饰符+类修饰符+类名 public String name; //类的属性 //成员变量,全局变量 //访问修饰符+数据类型+变量名 public void info(){ //访问修饰符+返回值+方法名 //同类方法中,可以调用自身的属性 this.name; //this:当前对象 //如果没有this,则遵循就近原则 } }
在main方法中调用
-
new 对象/属性
Student stu = new Student(); //对象+对象名 = +实例化对象
-
赋值
stu.name = "fr"; //示例化对象.对象属性 = +属性值
赋值由stu对象提出,通过'.'来连接。
-
对象数组赋值
Student [] stus = new Student[5]; stu[0] = new Student(); //或者 Student [] stus = {Student(),Student(),Student(),null,null}
构造方法
默认:
public 类名(){} //该方法系统默认自带
特点:
-
无返回类型
-
方法名与类名相同
注意事项
-
在一个类中,java编译时先编译属性的值,在调用构造方法的值,也就是说,构造方法中如果有参数的赋值,其值会覆盖默认设定的初始值。
-
带参数的构造方法会覆盖不带参数的默认构造方法,如果写了带参数的构造方法,最好在写一个不带参数的构造方法
-
在构造方法中可以通过this来替代构造方法名,调取与其参数类型,个数,循序一致的构造方法(只限于本类中)
-
构造方法不可被重写、继承 ,以及被final修饰
-
this()与super()必须放在构造方法的第一行
访问修饰符
修饰符 | 作用范围 | |
---|---|---|
private | 私有 | 只能在本类中使用 |
default | 默认 | 同包类比public,不同包有区别 |
protected | 受保护的 | 不同包访问和public有区别,不同包的继承,与default有区别 |
public | 公开 | 任意地方都能访问 |
-
值得注意的是private、default、protected在不同包下不相关的两个类之间是不能访问的!
final
-
修饰变量,变量为常量,必须赋予初始值,一般与static联用
public static final 数据类型 大写的常量名
-
修饰方法,方法为最终方法,不可被重写。
-
修饰类,类为最终类,不可被继承
static
-
静态变量只有一个值
-
静态方法只能引用静态变量,不能引用非静态的(在内存中属于同一个区域才能引用)
-
静态变量放置在静态块中储存
-
静态属性属于整个类,只有一个值(属于调用它的整个类,而不是单独的对象)
一般丁定义赋值是:类名.静态属性名
-
类的初始化,先初始静态的属性或方法
-
如果静态属性已经被赋予过值,那么在后续的new中不在创建(初始化过程只有一次)
-
String = “ ”存储的值放在静态区
-
static中不可使用this,super
-
静态不可操作非静态
静态块
格式:
static { }
这个模块在类加载到虚拟机的时候调用,在构造方法执行之前
实体块/语句块
{
}
执行在静态之后
javabean-
数据的书写格式规范
javabean使用private定义属性,这使得该属性无法再不通包中访问。
为了解决,采用间接的方法,定义get、set方法。
-
只改 set数据名(类型 形参){} this. 数据名 = 形参;}
-
只读 get数据名(){return this.数据名}