封装
封装的步骤
-
private 将属性私有化,修饰的数据只能在本类使用
-
对外提供简单的操作入口,以后外面要是想访问私有的数据,必须通过这些操作入口
-
对外提供两种操作方法,分别是get和set;
-
修改数据,调用set方法
-
读取数据,调用gat方法
-
-
get,set方法的命名规范
-
set:public void set+属性名字(首字母大写)(形式参数){}
//例子 public void setAge(int a){ age = a; }
-
get: public int get属性名字(首字母大写){}
//例子 public int getAge(){ return age; }
-
-
getter和getter 方法没有static关键字
-
有static的方法怎么调用?类名.方法名(实参)
-
没有static的方法怎么调用?引用.方法名(实参)
构造方法
-
构造方法又被称为构造函数/构造器
-
构造方法语法结构
-
【修饰符】构造方法名(形参){
构造方法体
}
构造方法的方法名必须和类名保持一致
-
-
普通的方法的语法结构
-
【修饰符】返回值类型方法名(形参){
方法体
}
-
-
对于构造方法,返回值类型不需要指定;并且也不能写void,写上了void,那么这个方法就变成普通方法了
-
构造方法的作用
-
构造方法的意义是,通过构造方法的调用,可以创建对象。
-
给实际变量赋值
-
-
构造方法怎么调用
-
普通方法调用:有static的时候用没有static的时候上面5 6点
-
构造方法调用:new 构造方法吗(实参)
-
-
当一个类里面没有任何定义的构造方法的化,系统默认的给类提供一个构造方法,但是不会显示出来
-
每个构造方法执行后,都有返回值
-
当一个类显示的将构造方法定义出来,那么系统则不会默认的认为这个类提供缺省构造器,必须直接把系统提供的构造方法显示的写出来
public class User { //当这个类上面都没有系统默认给一个不会显示的无参的构造方法如下 //public User(){} (构造方法吗和类名必须一样) //如果你自己定义了一个有参数的构造方法如下 public User(int a){} //那么系统就不会提供一个自带的无参的构造方法,需要自己显示的写出如下在public User(int a){} 前面写出 public User(){ } public User(int a){ System.out.println("cisojinjiang"); } //在测试类里面 调用构造方法 User u = new User();//调用无参构造 User u = new User(int 5);//调用有参构造
-
复习一下static
package laodu01.work02; public class Custmortext { public static void main(String[] args) { //同一个类中 两个方法都有static 那么调用另一个方法用 Custmortext.text(); //或者 text(); //调用没有static的方法时,先创建对象 Custmortext x = new Custmortext(); x.best(); } public static void text(){ System.out.println("cisojinjiang"); } public void best(){ System.out.println("cisojinjiang"); } }
参数的传递
如 int i = 1;
int j = i; //i传递给j,实际上只是将i变量中保持的10传递给j了,j实际上是一块全新的内存空间
User u = 0x123;
User u2 = u;//u传递给u2,实际是将0下23这个值给u2,u和u2实际上是两个完全不同的局部变量,但是他们这两个变量指向的堆内存中同一个java对象
this关键字
-
this是一个关键字翻译为这个
-
this十一一个引用,this是个变量,this变量中保存了内存地址指向自身,this储存在jvm堆内存中的java对象内部。
-
-
this出现在对象内部,有多少个对象就有多少个this
当使用c1 访问Customer对象是过程中的this就是c1
当使用c2 访问Customer对象是过程中的this就是c2
-
当一个行为/动作执行的过程当中需要对象参与,那么这个方法一定要定义为”实例方法“,不带static关键字(甚至是该一个人的年龄,因为改年龄需要一个对象所以不能加static)(实例方法的调用:引用.)
-
this在多数情况下可以不屑
-
this不能使用在含有static的方法当中
public class Date { private int year; private int month; private int day; //创建有参构造函数 public Date(int year, int month, int day) { this.year = year; this.month = month; this.day = day; } //创建无参构造函数 public Date(){ //输出2021年11月8号 /* this.year = 2021; this.month = 11; this.day = 8;*/ // 可以写成 this(2021,11,8);//这种方式不会构造新的对象,但是又能调用别的方法(构造函数之间的调用必须创建一个对象)而且 this(2021,11,8);这个语句只能出现在构造方法的第一行,他上面地方不能写代码 }