欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java入门 面向对象第一天

程序员文章站 2022-05-27 10:02:26
面向对象 人为抽象的一种编程模型,在理解面向对象的代码时要按照抽象的模型来理解,不能只从代码字面来理解复杂的问题,学会拆分成一个一个独立的小问题,通过解决每一个小问题,最后解决一个大问题 类 类是事物,算法,逻辑,概念等的抽象,用来封装这类型相关的数据和方法代码,封装成独立组件,可以把类理解成模板, ......

面向对象

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

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

对象

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

引用

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

这里以一个例子来了解:

项目: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()要在代码的首行.