Java入门 面向对象第一天

2019-08-09 00:00:00 java 面向对象 入门

面向对象

  人为抽象的一种编程模型,在理解面向对象的代码时要按照抽象的模型来理解,不能只从代码字面来理解复杂的问题,学会拆分成一个一个独立的小问题,通过解决每一个小问题,最后解决一个大问题

  类是事物,算法,逻辑,概念等的抽象,用来封装这类型相关的数据和方法代码,封装成独立组件,可以把类理解成模板,或者图纸.在创建类对象时就相当于按着这个模板来创建

对象

  从类创建来的具体实例,每个实例占用独立的内存空间,保存各自的属性数据,实例可以单独控制,让实例去执行指定方法中的代码.

引用

  保存一个实例对象的内存地址用引用变量,将地址值赋值给变量,用变量去调用一个实例,可以理解成遥控,只需要用引用去操作就行了.

这里以一个例子来了解:

项目:day0101_士兵 

类:day0101.Test1类和Solder类

Solder类代码:

 1 package day0101;
 2 
 3  
 4 
 5 import java.util.Random;
 6 
 7  
 8 
 9 /*
10 
11  * 封装
12 
13  * 相关数据,逻辑运算方法,
14 
15  * 封装成一个"类"组件
16 
17  */
18 
19 public class Solder {
20 
21 //成员变量
22 
23 int id; //默认值0
24 
25 int blood = 100;
26 
27 
28 //成员方法
29 
30 public void go() {
31 
32     System.out.println(this.id+"号士兵前进");
33 
34 }
35 
36 public void attack() {
37 
38     if (blood == 0) {
39 
40         System.out.println(
41 
42          "这是"+id+"号士兵的尸体");
43 
44         return;//方法到此结束
45 
46     }
47 
48     System.out.println(id+"号士兵进攻");
49 
50     //模拟受到伤害,血量减少
51 
52     //产生一个随机减血量
53 
54     int d = new Random().nextInt(10);
55 
56     blood -= d;//血量减少
57 
58     if (blood < 0) {//如果血量变成负数,重置成0
59 
60         blood = 0;
61 
62     }
63 
64     System.out.println("血量: "+blood);
65 
66     if (blood == 0) {
67 
68         System.out.println(id+"号士兵阵亡");
69 
70     }
71 
72 }
73 
74 }

Test1类代码:

package day0101;


public class Test1 {

public static void main(String[] args) {

    //新建 Soldier 实例

    //再把它的内存地址值,保存到 s1 变量

    /* s1 = {

     *    id: 0,

     *    blood: 100

     * }

     */

    Solder s1 = new Solder();

    /* s2 = {

     *    id: 0,

     *    blood: 100

     * }

     */

    Solder s2 = new Solder();

    //用s1变量找到士兵的内存空间,访问它的id变量

    s1.id = 9527;

    s2.id = 9528;

    //用s1变量找到士兵的内存空间,让它去执行go()方法代码

    s1.go();

    s2.go();

    s2.attack();

    s1.attack();
  }

}

构造方法

新建实例时,执行的一种特殊方法   new Solder()

Java的类中必须有构造方法,如果自己不定义构造方法,编译器会添加默认的空构造方法

class Solder{
      public Solder(){
         
    }      
}

上面的代码是自己添加的一个空构造方法,当你不添加是,编译器也是自动生成空构造方法,什么也不做

构造方法的作用

  创建一个实例之后,立即执行的一个特殊方法,构造方法中的代码可以任意编写,完成任意功能或执行任意运算,构造方法一般的作用是给成员变量赋值.成员变量是定义在类中的变量.

this用法

this.id   

id是成员变量,当用构造函数给成员变量赋值时:

public class A{
     int id;  
    public A(int id){
         this.id=id;
   }  
}

this.id表示的是成员变量id.

this(a,b)

a,b是括号中的参数,this(a,b)表示调用参数为两个构造方法

public class A{
     int id;  
     int a;
    public A(int id){
      this(id,5)   
   }  
    public A(int id,int a){
        this.id=id;
        this.a=a ;
    }  
}

this()要在代码的首行.

相关文章