zoukankan      html  css  js  c++  java
  • 方法构造和方法重载之奥特曼与大boss之战

    知识点的总结

    1.类中的方法分为两类:1.普通方法; 2.构造方法。

    2.构造方法的格式:
      public 类名(数据类型  参数名,...){
     }

    3.构造方法的用途:
      1.实例化对象。
      2.初始化属性值。

    4.构造方法和普通方法的区别:
      1.返回值:构造方法一定不能定义返回值类型;构造方法的名字必须要和类名完全一致,包括大小写。
      2.用途
      3.名字

    5.注意:java会给类提供一个无参数的构造方法(默认构造方法),如果你在类中定义了构造方法,
      默认的构造方法会被覆盖,无法在使用默认的,只能使用你自定义的构造方法。

    6.方法重载的条件:
      1.方法名必须要完全一致;
      2.方法所带的参数个数、参数顺序、参数类型至少一个不同。


    例如:

    protected int study(int s){
            score += s;
            System.out.println(name+"的学分是"+score);
            return 0;
        }
        
        public void study(){
            score++;
            System.out.println(name+"正在学习中,学分是"+score);
        }


    7.现实生活中什么样的情况要使用方法重载呢?
      普通方法的重载情况:
       学习开车、学习打游戏
      构造方法的重载情况:
       贾宝玉出生的时候带通灵宝玉,其他的角色是不需要带通灵宝玉。

    8.调用重载后的方法是由调用方法时所给的参数决定的。

    public static void main(String[] args) {
      niming stu = new niming ("张三",3);
      stu.study();
      niming  stu2 = new niming ("李四",3);
         stu2.name = "李四";
      stu2.study(10);
      
     } 

    9.当你参数名和属性名完全一致的情况下,给属性名加上"this.",这样才会表示属性,否则表示的是参数。(因为就近原则,就近的是参数,而不是属性)
      this表示的是的当前调用方法的对象。
      假设a对象名在调用方法,那么方法中this就表示a对象。

    public niming(String name,int score){
            this.name = name;
            this.score =score ;
        }

    实例:

    package s522;
    
    public class Role {
        public String name;
        public int blood;
        public int attack;
        //定义一个构造方法
     public Role(String name,int blood,int attack){
         this.name=name;
         this.blood=blood;
         this.attack=attack;
     }
        public void PK(Role role) {
            role.blood -= attack;
            System.out.println(name + "正在攻打" + role.name + "," + role.name
                    + "剩余血量是:" + role.blood);
        }
        public static void main(String[] args) {
            Role a1 = new Role( "奥特曼A",100,5);
            Role a2 = new Role("奥特曼B",100,5);
            Role m1 = new Role("小怪兽A",100,3);
            Role m2 = new Role("小怪兽B",100,3);
            while (a1.blood > 0 && m1.blood > 0) {
                a1.PK(m1);
                if (m1.blood <= 0) {
                    System.out.println(a1.name + "胜利!");
                    break;
                }
                m1.PK(a1);
                if (a1.blood <= 0) {
                    System.out.println(m1.name + "胜利!");
                    break;
                }
            }
            if (a1.blood > 0) {
                while (a1.blood > 0 && a2.blood > 0) {
                    a1.PK(a2);
                    if (a2.blood <= 0) {
                        System.out.println(a1.name + "胜利!");
                        break;
                    }
                    a2.PK(a1);
                    if (a1.blood <= 0) {
                        System.out.println(a2.name + "胜利!");
                        break;
                    }
                }
            }
            else {
                while (m2.blood > 0 && m1.blood > 0) {
                    m2.PK(m1);
                    if (m1.blood <= 0) {
                        System.out.println(m2.name + "胜利!");
                        break;
                    }
                    m1.PK(m2);
                    if (m2.blood <= 0) {
                        System.out.println(m1.name + "胜利!");
                        break;
                    }
                }
            }
    
        }
    
    }

    上面的方法用了构造法,没有用到方法重载,如果要用方法重载,思路是:写两个方法体,一个是奥特曼打小怪兽,一个是奥特曼打大boss.

    // 普通方法重载
        public void PK(String name) {
      /*
       * 这里表示的是:参数的血量=参数的血量-被攻击的能量。例如:a1.PK("小怪兽");
       *  则表示:小怪兽的血量=小怪兽的血量-奥特曼的攻击能量
       */
      this.blood -= attack;
      System.out.println(name + "正在攻打" + this.name + "," + this.name
        + "剩余血量是:" + this.blood);
     }
     // 普通方法方法重载
     public void PK(boss b) {
      b.blood -= attack;
      System.out.println(name + "正在攻打" + b.name + "," +b.name + "剩余血量是:"
        + b.blood);
     }
    public static void main(String[] args) { boss a1 = new boss("奥特曼", 200, 5); boss a2 = new boss("小怪兽", 100, 3); boss m1 = new boss("大boss", 100, 3); while (a1.blood > 0 && a2.blood > 0) { a2.PK("奥特曼"); if (a1.blood <= 0) { System.out.println(a2.name + "胜利!"); break; } a1.PK("小怪兽"); if (a2.blood <= 0) { System.out.println(a1.name + "胜利!"); break; } } if (a1.blood > 0) { while (a1.blood > 0 && m1.blood > 0) { a1.PK(m1); if (m1.blood <= 0) { System.out.println(a1.name + "胜利!"); break; } m1.PK(a1); if (a1.blood <= 0) { System.out.println(m1.name + "胜利!"); break; } } }

    运行的结果:

  • 相关阅读:
    CF763C Timofey and Remoduling
    CF762E Radio Stations
    CF762D Maximum Path
    CF763B Timofey and Rectangles
    URAL1696 Salary for Robots
    uva10884 Persephone
    LA4273 Post Offices
    SCU3037 Painting the Balls
    poj3375 Network Connection
    Golang zip压缩文件读写操作
  • 原文地址:https://www.cnblogs.com/java-7/p/5666499.html
Copyright © 2011-2022 走看看