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

  • 相关阅读:
    MySQL Explain优化
    mysql联合索引
    MySQL索引类型
    php常用的排序算法与二分法查找
    mysql 主从复制(mysql双机热备的实现)
    mysql 主从复制 (2)
    Linux 查看进程之PS命令
    PHP isset 和 array_key_exists 对比
    Linux md5sum 的用法
    Linux Sphinx 安装与使用
  • 原文地址:https://www.cnblogs.com/kjs-1998/p/11266318.html
Copyright © 2020-2023  润新知