java语言基础--封装
1.封装:
- 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式;
- 优点:隐藏代码的实现细节,提高安全性。
2.private 关键字:
- 为了保护代码的安全性。外界就不能随意获得;
- 需要用get-set方法对外提供访问方式。
- private 不是私有的意思,而是封装的体现形式。
来一个小实例:
Student.java
public class Student { private int age; private String name; public void setAge(int _age) { if (_age > 0 && _age < 120) { age = _age; } else { System.out.println("您输入的年龄不对呢^_^"); } } public int getAge() { return age; } public void setName(String _name) { name = _name; } public String getName() { return name; } }
Main.java
public class Main { public static void main(String[] args) { Student s= new Student(); s.setName("芳芳"); s.setAge(13); System.out.println(s.getAge()); System.out.println(s.getName()); } }
3.基本数据类型的传递
- 基本数据类型的传递都是值传递,就是只传递了值,地址没有传递;
public class Main { public static void main(String[] args) { int i=10; m1(i); //打印结果为11 System.out.println("Main方法中的i"+i); //打印结果为10; } public static void m1(int i) { System.out.println("m1中的i"+(i+1)); } }
4.引用数据类型的传递
- 这里是引用数据的传递,传递的是引用
小实例:
Animal.java
public class Animal { private int age; public void setAge(int _age) { age = _age; } public int getAge() { return age; } }
Main.java
public class Main { public static void m1(Animal a) { int age=a.getAge(); a.setAge(++age); System.out.println(a.getAge()); } public static void main(String[] args) { Animal a = new Animal(); a.setAge(10); System.out.println(a.getAge()); m1(a); } }
打印结果:
10 11
如我在Main.java中作出改动:
public class Main { public static void m1(Animal a) { int age=a.getAge(); a.setAge(++age); System.out.println(a.getAge()); } public static void main(String[] args) { Animal a = new Animal(); a.setAge(10); m1(a); System.out.println(a.getAge()); } }
打印结果:
11 11

运行原理:
- 先将main方法进行压栈,
- 压栈完成后创建了一个对象,
- 在堆栈中给之分配了内存空间,
- a指向空间地址
- 在main方法中给之附上了之10,
- 调用m1方法,然后把a的值给传递了过去,传递的是一个引用
- 同样m1的a也是指向同一块内存空间,
- 对age的值进行自增运算,
- 改变了引用对象的值,
- 最后,main方法再调用age的时候,由10变成了11.
5.构造方法
- 构造方法的主要作用就是给对象数据进行初始化
- 构造方法必须和类名一致
- 没有返回值
- 没有void修饰
- 没有具体的返回值return
- 有一个默认的构造方法
- 若给出一个构造方法,便不会再默认给出一个构造方法
- 在运行程序时,会自动调用构造方法里面的内容。
浙公网安备 33010602011771号