我们为什么需要封装?
在面对对象编程中,我们会封装对象的属性和方法,通常我们将封装内容设为私有(private),那么在其他类中怎么给对象实例化,初始化具体属性呢,构造方法帮我们解决了这个问题,构造方法其他类提供了访问本类中的私有属性和方法的渠道。通过方法的重载我们可以初始化相同类下(具有一些相同属性和行为)的多个对象。
封装:能够实现访问权限的控制。
注意点:
类中写上属性和方法
私有属性要提供公开的方法去访问
提供公开的方法,是对属性赋值和取值
一个属性同时具备getter、setter方法
类中属性初赋值:
定义时赋初值
setter设置器
通过构造方法赋值
方法的重载:
方法的重载一般在同一个类中
方法重载的形式: 方法名相同、返回值类型相同、参数列表不同
方法重载一般最少是两个方法(构造方法重载、实例方法重载)
方法重载的作用:
①构造方法重载:能够初始化类中不同属性
②实例方法重载:重载可以共用一个方法名执行不同的操作。
参数列表:①参数个数 ②参数类型 ③参数的位置
方法重载的时候,只有类加载到虚拟机里面。虚拟机会根据传递的具体参数调用具体的方法 例如:System.out.println();
构造方法具有以下几个要素:
1.构造方法与类同名,首字母大写
2.构造方法没有返回值,也不需要void修饰
3.构造方法的作用 :a)能够初始化类中的属性 b)能够创建出类的对象
4.构造方法可以重载,构造方法的默认修饰符是public,也可以private
5.一个类中如果我们没有定义构造方法,其实编译器会自动加上一个无参数的构造方法(隐式构造方法)
6.如果在类中我们自定义一个构造方法(显式构造方法),默认的隐式构造方法将会失效
7.构造方法(函数)可以传递参数(有参数的构造方法),通过不同的参数可以创建不同的对象
8.类中属性赋初值:a)构造方法 b)Setter 设置器 c)定义时候赋初值
9.类可以选择某一个构造方法创建其对象
10. 构造方法的重载实现定义多个不同对象
11.调用本类下的构造方法用this.(), 调用父类中的构造方法用Super.()
例子:
我们定义人(people)这个类,该类属性name、sex、 age三个私有属性,新建 zhangsan类,
通过people类构造方法确定张三这个对象,(性别男,年龄20)。代码如下:
package Prac;
public class People {
/*声明属性*/
private String name; //姓名
private int age; //年龄
private String sex; //性别
/*构造方法*/
public People(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
/*setter、getter方法*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
package Prac;
public class Zhangsan {
/**
* 张三类
*
*/
public static void main(String[] args) {
People zhangsan=new People("张三",20,"男"); //调用people类内构造方法给people类内私有属性赋值
System.out.println("我的名字叫"+zhangsan.getName()+"\n我的年龄是:"+zhangsan.getAge()+"\n性别:"+zhangsan.getSex());
}
}
打印结果:
我的名字叫张三
我的年龄是:20
性别:男