一、封装的概念
在现实生活中,每个对象的属性或者方法,有些是可以向外展示的,有些是不可以向外展示的,比如,人的外貌、姓名、国籍等都可以向外展示,但是自己家里的事情就不可以告诉别人,再以笔记本为例,笔记本内部有cpu、主板、内存条、硬盘、网卡显卡声卡等并没有向外展示,而是封装在外壳内部,只提供给我们使用的接口功能,这就保证了电脑的安全性,因为我们使用者不一定都熟悉电脑,有时候一些误操作可能导致电脑损坏。程序也是如此,类中的某些属性和方法只提供给你使用,但是你不能随意更改,这样就保证了代码的健壮性。但是我们要提供给调用者一些访问的方法,然后设置访问的条件。
public class Computer { private String hardDisk;//硬盘 private String mainboard;//主板 public void use(){ System.out.println("useing"); } public String getHardDisk() { return hardDisk; } public void setHardDisk(String hardDisk) { this.hardDisk = hardDisk; } public String getMainboard() { return mainboard; } public void setMainboard(String mainboard) { this.mainboard = mainboard; } }
关键字:private是一个关键字,它用来私有化成员变量,这样成员变量就只用在本类中能够访问到,其他类访问不到,只有通过调用提供的方法来访问,那么我们为了控制访问条件,就可以在提供的方法中设置一些条件进行限制。
注意:private私有化变量只是封装的一种。
二、构造方法
1.上面提到了构造方法(函数),格式:方法名和类名相同,用了对对象进行初始化,因为类创建的对象存在共性,那么我们就可以在生成对象的同时给它的成员变量进行赋值初始化;
Person p=new Person("小明",19); //这样new+构造函数创建了一个对象,并且给对象中成员变量赋值
注意:构造方法没有返回值
2.方法的重载:定义:当一个类中定义了多个方法,方法名相同,但是参数不同,参数个数不同或者类型不同,那么类产生的对象在调用方法时,会根据参数匹配情况自动选择,这就是重载;
3.如果类中没有构造方法,会默认添加一个空参数构造方法
方法名(){
}
方法的重载举例如下:
class Person { Person() { } Person(String name) { this.name=name; } Person(String name,int age) { this.name=name; this.age=age; } }
注意:
1、如果创建的对象中,既有无参数的,也有有参数的,那么,在类中要把空参数构造方法写上,因为如果自己写了一个有参数构造方法,那么系统就不会在默认提供一个无参的构造方法了。
2、一些java规范:类名的首字母必须大写,方法和属性首字母小写,有多个单词组成的类名和方法需要使用驼峰结构,第二个单词首字母大写;
三、构造代码块与构造函数之间的调用
1.构造代码块:当对象一建立,构造代码块就运行了,它是用来给对象进行初始化的,它优先于对象执行。
格式:{ System.out.println("");
}
它与构造函数的区别是:它是用来给所有对象进行初始化的,所以里面的执行体,是所用对象共性的东西;而构造函数是给特定的对象进行初始化,它还要看参数,考虑到重载问题等等。
3.构造函数之间的调用通过this语句来完成:代码体现如下:
class Person { Person() { } Person(String name) { this();//1 this.name=name;//3 } Person(String name,int age) { this(name);//2 this.age=age;//4 } }
如果Person p=new Person("小明",19);,那么首先根据方法的重载,它会找到最后一个构造方法,然后执行2;到上一个构造方法中,然后有执行1;然后执行3,再执行4;
注意:构造方法之间调用时,this语句要出现在第一行,构造方法先执行,如果构造方法里还有构造方法,那么就执行更细节的构造方法。