欢迎光临
我们一直在努力

Java初始(5)

1. Java面向对象

1.1 封装

1.1.1 封装的引入

public class Student {
public int id;
public String name;
public int age;

public void student(){
System.out.println("学号:" + this.id);
System.out.println("姓名:" + this.name);
System.out.println("年龄:" + this.age);
}
}

public class Test {
public static void main(String[] args) {
Student student = new Student();
student.id = -1;
student.name = "2";
student.age = 3;
student.student();
}
}

调用类中的方法后,会输出以下结果:

学号:-1
姓名:2
年龄:3

      由此可以看出外部在实例化类的对象时,可以随意给对象的属性赋值,只要数据类型一致即可,此时就会存在逻辑错误的问题(例如现实生活中学号不会是负数)。想要解决这个问题,我们可以在类中对属性的赋值加以限制,将外部传入的参数进行筛选,合格的完成赋值,不合格的就进行相应的处理,这个过程就是封装。

1.1.2 封装的定义

       封装是指将类的属性隐藏在内部,外部不能直接访问和修改,必须通过类提供的方法来完成对属性的访问和修改,封装的核心思想就是尽可能把属性都隐藏在内部,对外提供方法来访问,我们可以在这些方法中添加逻辑处理来实现过滤,以屏蔽错误数据的赋值。

1.1.3 封装的步骤

(1)修改属性的访问权限,让外部无法直接访问;【例如可以将 public 改为 private】(2)提供外部可以直接访问的方法;【】(3)在方法中加入属性控制逻辑。

【注意:访问权限是指该属性可以被直接访问的范围,是在属性定义时设定的。】

1.1.4 封装示例代码

public class Student {
private int id;//使用private后,访问属性只能在类的内部访问,外部访问不了。
private String name;
private int age;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

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 void student(){
System.out.println("学号:" + this.id);
System.out.println("姓名:" + this.name);
System.out.println("年龄:" + this.age);
}
}

     【编程小技巧:可以使用Alt+Insert来自动生成想要写的代码】

1.2  static 关键字

1.2.1 定义或是用途

      static 表示静态或全局,可以用来修饰成员变量和成员方法以及代码块。【类中方法的调用不再依赖于去创建对象,即不需要创建类对应的对象也能调用类中的方法】

       使用 static 关键字修饰的成员方法和成员变量独立于该类的任何一个对象,访问时不再需要依赖于对象,可以直接通过类去访问,可以理解为该类的所有对象共用,所以是全局。

       用 static 修饰的成员变量叫做静态变量也叫做类变量,static 修饰的成员方法叫做静态方法也叫做类方法,多个对象共用,内存中只有一份,没有被 static 修饰的成员变量叫做实例对象,没有被 static 修饰的成员方法叫做实例方法,一个对象对应一个,内存中有多份。

示例图如下:

1.2.2 示例代码

    首先创建一个静态成员变量和静态成员方法,代码如下:

public class Student {
public static String name;
public static void show(){
System.out.println("1");
}
}

  然后,我们不创建对象,直接使用类来调用该变量和方法:

public class Test {
public static void main(String[] args) {
Student.name = "1";
System.out.println(Student.name);
Student.show();
}
}

  最后,输出结果如下所示:

1
01

1.2.3 静态变量与普通变量的区别代码示例:

(1)普通成员变量(定义一个 id 成员变量):

public class Test {
private int id;

public static void main(String[] args) {
Test test = null;
for (int i = 0; i < 10; i++) {
test = new Test();
test.id++;
}
System.out.println(test.id);
}
}

结果如下:

1

(2)静态成员变量(将 id 改为静态成员变量):

public class Test {
private static int id;

public static void main(String[] args) {
Test test = null;
for (int i = 0; i < 10; i++) {
test = new Test();
test.id++;
}
System.out.println(test.id);
}
}

最终输出结果如下:

10

赞(0)
未经允许不得转载:171主机测评 » Java初始(5)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址