一、访问控制符(域修饰符):限制变量和方法的可访问范围
本类、本包、其他包、其它包的子孙类 (1可以使用,0不能使用)
public 1 1 1 1
protected 1 1 0 1 (只有子类可用)
不加控制符 1 1 0 0 <default>
private 1 0 0 0
(在同一个源文件中,只能有一个类被public 修饰,修饰public的类的类名必须与文件名一致)
(局部变量不能用访问控制符修饰)
二、实体类:代表了客观事物的数据模型,一般情况下,在实体类中不定义对事物的操作。
例如 有一个学生类,用来映射学生的所有数据,那么该类中只有学生的相关属性,而没有关于学生增删改查的操作
一般在实体类中,属性都要私有化。这样子对属性的访问就可以灵活的控制起来
例如有些属性,我们希望使用者可以获取该属性值,但是不能修改该属性值
(实体类固定格式):
属性
无参构造方法
有参构造方法 赋初始值 (简化了成员变量赋初始值的过程,参数名与成员变量名保持一致,参数可根据需要设置,一般写全)
setter和getter方法 通过统计的方式赋值和获取值 (成员方法)
toString() 快速查看信息 (成员方法)
针对于私有化的属性,让使用者通过setter方法和getter方法来访问对应的属性
setter是用来修改属性值 (有需要修改成的参数无返回值); getter是用来获取属性值 (有返回值无参数)
//学生的实体类
public class Student {
private int id;
private String name;
public void setId(int id) { //形参id作用范围本方法中
this.id = id; //(此处实参赋值-形参id-成员变量id)
//(this.id的id为成员变量作用范围本类中 等号右侧的id为离它最近的id,即形参(int id))
}
public int getId() {
return this.id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
//(只适合看信息,不能使用,不用再另外打印)
@Override
public String toString() {
return "Student [id =" + id + ", name =" + name + "]";
}
public static void main(String[] args) {
通过无参的构造方法创建对象
Student student = new Student();
student.setId(1);
student.setName("张三");
//通过有参的构造方法创建对象
Student student2 = new Student(2, 李四);
System.out.println(student.getId()); //1
System.out.println(student); //Student [id =1, name =张三]
System.out.println(student2); //Student [id =2, name =李四]
//Student[] students = {student, student2} 将多个信息放到同一数组里
}
}
Calculator cal = new Calculator(3,5);
double sum = cal.add();
System.out.println("sum = " + sum);
System.out.println(calr.sub());
重新赋值
1:新值在原来位置替换原值
cal.setM(7);
cal.setN(8);
System.out.println(cal.add());
2:新开辟了内存
cal = new Calculator(7,8);
3:Scanner输入值
AnimalUtils utils = new AnimalUtils();
两只狗各叫一声
utils.cry(new Dog());
utils.cry(new Dog());
同一只猫叫两声
Cat cat = new Cat();
utils.cry(cat);
utils.cry(cat);
规范格式对齐:右击Source - Format
右击-Source-Generate 快捷键Alt+Shift+s 生成有参和无参构造方法/ setter方法和getter方法/toString()方法