封装
将类的成员属性私有化,对外提供公共方法去访问的方式
好处:
- 隐藏细节,对外提供公共访问方法
- 提供了代码的复用性
- 具有安全性
封装原则:
将不需要对外提供的内容都隐藏起来。
把属性隐藏,提供公共方法对其访问。private关键字
一个权限修饰符。
可以修饰成员(成员变量和成员方法)
被private修饰的成员只在本类中才能访问。private常见的用法:
把成员变量用private修饰
提供对应的getXxx()/setXxx()方法class Student{ //private修饰成员变量 private String name; private int age; //提供的对外访问set、get方法 public String getName() { return name; } public void setName(String n) { name = n; } public int getAge() { return age; } public void setAge(int a) { age = a; } } class StudentDemo{ public static void main(String[] args) { Student s = new Student(); //set方法进行赋值 s.setName("小明"); s.setAge(18); System.out.println(s.getName()+"=="+s.getAge());//get方法获取 } }
构造方法
构造方法作用概述
给对象的数据进行初始化
构造方法格式
- 方法名与类名相同
- 没有返回值类型,连void都没有
- 没有具体的返回值
构造方法注意事项
- 如果你不提供构造方法,系统会给出默认构造方法
- 如果你提供了构造方法,系统将不再提供
- 构造方法也是可以重载的
- 虽然构造方法没有返回值,但是也可以写一个return,在最后写return;这种做法在任何void类型的方法最后都是没有问题的。
举例:使用构造方法赋值
class Student{ //private修饰成员变量 private String name; private int age; //无参的构造方法 public Student() { } //有参的构造方法 public Student(String name, int age) { this.name = name; this.age = age; } //提供的对外访问set、get方法 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; } } class StudentDemo{ public static void main(String[] args) { Student s = new Student("小明",18);//构造方法赋值 System.out.println(s.getName()+"=="+s.getAge());//get方法获取 } }
this关键字
this:代表了当前类的对象的地址值的引用!(方法被谁调用,this就代表这个对象)
当局部变量和成员变量同名时,方法中使用变量会就近原则隐藏成员变量
所以使用this关键字来区分
举例:
class Student{ //private修饰成员变量 private String name; private int age; //提供的对外访问set、get方法 public String getName() { return name; } public void setName(String name) {//和成员变量同名 this.name = name;//使用this关键字 } public int getAge() { return age; } public void setAge(int age) {//和成员变量同名 this.age = age;//使用this关键字 } } class StudentDemo{ public static void main(String[] args) { Student s = new Student(); //set方法进行赋值 s.setName("小明"); s.setAge(18); System.out.println(s.getName()+"=="+s.getAge());//get方法获取 } }
使用this()代替构造方法:
代码复用、减少冗余
class Student{ //private修饰成员变量 private String name; private int age; private String gender; private String address; //无参的构造方法 public Student() { } public Student(String name,int age,String gender){ this.name = name; this.age = age; this.gender = gender; } public Student(String name, int age,String gender,String address) { this(name,age,gender);//this(xx)代替构造方法 this.address = address; } public void show (){ System.out.println(name+"=="+age+"=="+gender+"=="+address); } } class StudentDemo{ public static void main(String[] args) { Student s = new Student("小明",18,"男","陕西");//构造方法赋值 s.show(); } }