方法构造和方法重载之奥特曼与大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;
                }
            }
        }

运行的结果:

时间: 2024-10-21 15:31:31

方法构造和方法重载之奥特曼与大boss之战的相关文章

C# 继承实现父类方法、重写、重载

继承是派生类(子类)去实现(重写<override>.重构<new>)基类(父类)的方法或属性.从而获取在派生类中要实现的功能. 子类调用父类构造方法,在父类中有个实现姓名和年龄的构造方法但是中子类也要实现这样的功能这时子类不用再次去写这个功能只要去调用父类的功能即可. public class Person { private string _name = null; private int _age = 0; public Person(string name, int age

方法重写和方法重载

重写和重载虽然都有一个共同点是发生在方法之间,但是两者之间没有任何的关系! 方法重载:是指一个类中有多个方法,这些方法的名字一样,但是形参不一样 方法重写:发生在子类和父类之间,当子类继承了父类之后,子类就拥有了父类中定义的方法,当然除了构造器没有继承,子类可以去调用父类的方法,也可以重写,在子类中重写父类的方法,保证方法名一样,形参也要一样吧,这样子类再访问这个方法时就会默认使用这个在子类中被重写的方法,而不是父类中那个被覆盖的方法. 当然,我们如果想在子类中使用父类中被覆盖的方法,我们可以使

方法的创建、重载及递归调用

-----------siwuxie095 1.方法的定义 方法就是一段可重复调用的代码段 定义格式: 「方法的返回值类型为 void 时,不需要返回值,小括号 () 里可以有参数」 2.方法的重载: 方法名称相同,但是参数的类型和个数不同(即参数可辨), 通过传递参数的个数和类型不同来完成不同的功能 调用时系统自动匹配 3.方法的递归调用 递归调用是一种特殊的调用形式,就是方法自己调自己 常用于遍历(如:文件夹等) 如:从 1 加到 100 代码: package com.siwuxie095

c# 中面相对性的三个特点:封装,继承,多态, 以及c#中隐藏(new)和方法重写(override)和重载(overload)的区别

封装 1)封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问,通常有两种访问方式:set 设置,get 获取. 2)封装结果:存在但是不可见. 3) 访问修饰符 声明的可访问性                                 含义 public                                    访问不受限制. protected                              访问仅限于本类或者其子类(可以跨程序集). p

方法重写与方法重载

继承和多态都是面向对象程序设计的特点.使用继承可以在一个父类的基础上再创建一个子类,这个子类不但拥有父类已有的属性和方法,还可以创建属于自己的属性和方法.由于子类和父类之间的关系,从而引出了方法重写和方法重载的问题.方法重写及方法重载在继承和多态性方面的应用中会存在很多问题,这些概念很容易混淆,掌握重写和重载的区别对学会使用多态的方式编写程序.提高程序的可维护性奠定了基础. 一.方法重写(0veriding)如何定义重写:在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类

hibernate4.3版本构造SessionFactory方法

hibernate3.X构造SessionFactory方法 //读取hibernate.cfg.xml文件 Configuration cfg = new Configuration().configure(); //建立SessionFactory SessionFactory factory = cfg.buildSessionFactory(); 在hibernate4.3中函数buildSessionFactory()已经作废,以下是新的构造方法 private static Serv

对象与类及方法构造

1.对象:实质就是指属性加上行为 类是具有共同属性和行为的对象集合 类定义了对象的属性和方法 分析过程先有对象后有类,开发过程正好相反 面向对象指的是以对象为基本单位去分析,设计以及实现系统 2.类的基本结构 (1)属性  (2)方法  (3)构造方法  (4)块  (5)内部类 3.类的声明形式和作用 形式:权限修饰符+修饰符+返回值+类名 作用:类就是一个模板,定义多个对象共同的属性和方法 4.方法的重载 在Java中如果有多个同名但是不同参数的方法就成为"方法的重载" 编译器会根

JAVA中方法重载,方法覆盖,方法继承等小结

1.方法重载(method overload)的具体规范 如果有两个方法的方法名相同,但参数不一致,哪么可以说一个方法是另一个方法的重载. 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体. 1.如果参数个数不同,就不管它的参数类型了! 2.如果参数个数相同,那么参数的类型或者参数的顺序必须不同. 三.方法的返回类型.修饰符可以相同,也可不同. 四.main方法也可以被重载

Java方法继承、方法重载、方法覆盖小总结

转自:http://blog.csdn.net/cdsnmdl/article/details/3968688 ———————————————————————————————————— 1.方法继承:利用extends关键字一个方法继承另一个方法,而且只能直接继承一个类. 当Sub类和Base类在同一个包时Sub类继承Base类中的public/protected/默认级别的变量个方法 在不同包时继承public/protected级别的变量和方法. 2.方法重载:如果有两个方法的方法名相同,但