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

 运行原理:

  1. 先将main方法进行压栈,
  2. 压栈完成后创建了一个对象,
  3. 在堆栈中给之分配了内存空间,
  4. a指向空间地址
  5. 在main方法中给之附上了之10,
  6. 调用m1方法,然后把a的值给传递了过去,传递的是一个引用
  7. 同样m1的a也是指向同一块内存空间,
  8. 对age的值进行自增运算,
  9. 改变了引用对象的值,
  10. 最后,main方法再调用age的时候,由10变成了11.

 5.构造方法

  • 构造方法的主要作用就是给对象数据进行初始化
  • 构造方法必须和类名一致
  • 没有返回值
  • 没有void修饰
  • 没有具体的返回值return
  • 有一个默认的构造方法
  • 若给出一个构造方法,便不会再默认给出一个构造方法
  • 在运行程序时,会自动调用构造方法里面的内容。

 

posted on 2018-08-14 22:36  董大志  阅读(268)  评论(0)    收藏  举报

导航