Java自学-类和对象 构造方法
怎么使用 Java 构造方法?
通过一个类创建一个对象,这个过程叫做实例化
实例化是通过调用构造方法(又叫做构造器)实现的
步骤 1 : 什么是构造方法
方法名和类名一样(包括大小写)
没有返回类型
实例化一个对象的时候,必然调用构造方法
public class Hero {
    String name;
    float hp;
    float armor;
    int moveSpeed;
    // 方法名和类名一样(包括大小写)
    // 没有返回类型
    public Hero() {
        System.out.println("实例化一个对象的时候,必然调用构造方法");
    }
    public static void main(String[] args) {
        //实例化一个对象的时候,必然调用构造方法
        Hero h = new Hero();
    }
}
步骤 2 : 隐式的构造方法
Hero类的构造方法是
public Hero(){
}
这个无参的构造方法,如果不写,就会默认提供一个
public class Hero {
    String name; //姓名
    float hp; //血量
    float armor; //护甲
    int moveSpeed; //移动速度
    //这个无参的构造方法,如果不写,
    //就会默认提供一个无参的构造方法
    //  public Hero(){
    //      System.out.println("调用Hero的构造方法");
    //  }
    public static void main(String[] args) {
        Hero garen =  new Hero();
        garen.name = "盖伦";
        garen.hp = 616.28f;
        garen.armor = 27.536f;
        garen.moveSpeed = 350;
        Hero teemo =  new Hero();
        teemo.name = "提莫";
        teemo.hp = 383f;
        teemo.armor = 14f;
        teemo.moveSpeed = 330;
    }  
}
步骤 3 : 如果提供了一个有参的构造方法
一旦提供了一个有参的构造方法
同时又没有显式的提供一个无参的构造方法
那么默认的无参的构造方法,就“木有了“
public class Hero {
    String name; //姓名
    float hp; //血量
    float armor; //护甲
    int moveSpeed; //移动速度
    //有参的构造方法
    //默认的无参的构造方法就失效了
    public Hero(String heroname){
        name = heroname;
    }
    public static void main(String[] args) {
        Hero garen =  new Hero("盖伦"); 
        Hero teemo =  new Hero(); //无参的构造方法“木有了”
    }  
}
步骤 4 : 构造方法的重载
和普通方法一样,构造方法也可以重载
 public class Hero {
        String name; //姓名
        float hp; //血量
        float armor; //护甲
        int moveSpeed; //移动速度
        //带一个参数的构造方法
        public Hero(String heroname){
            name = heroname;
        }
        //带两个参数的构造方法
        public Hero(String heroname,float herohp){
            name = heroname;
            hp = herohp;
        }
        public static void main(String[] args) {
            Hero garen =  new Hero("盖伦");
            Hero teemo =  new Hero("提莫",383);
        }
    }
练习: 构造方法
(为Hero设计4个参数的构造方法
这四个参数分别是
String heroName
float heroHP
float heroArmor
int heroMoveSpeed)
答案:
public class Hero {
    String name; //姓名
    float hp; //血量
    float armor; //护甲
    int moveSpeed; //移动速度
    //带一个参数的构造方法
    public Hero(String heroname){
        name = heroname;
    }
    //带两个参数的构造方法
    public Hero(String heroname,float herohp){
        name = heroname;
        hp = herohp;
    }
    public Hero(String heroName,float heroHP,float heroArmor,int heroMoveSpeed){
        name = heroName;
        hp = heroHP;
        armor = heroArmor;
        moveSpeed=heroMoveSpeed;
    }
    public static void main(String[] args) {
        Hero garen =  new Hero("盖伦");
        Hero teemo =  new Hero("提莫",383);
        Hero db =  new Hero("死哥",400,27,360);
    }
}Java自学-类和对象 构造方法的更多相关文章
- java自学-类与对象
		1.面向对象和面向过程 java是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想. 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为.面向对象思想就是在计算机程序设计过程中, ... 
- Java自学-类和对象 类属性
		Java的类属性和对象属性 当一个属性被static修饰的时候,就叫做类属性,又叫做静态属性 当一个属性被声明成类属性,那么所有的对象,都共享一个值 与对象属性对比: 不同对象的 对象属性 的值都可能 ... 
- Java自学-类和对象 类方法
		Java的类方法和对象方法 类方法: 又叫做静态方法 对象方法: 又叫实例方法,非静态方法 访问一个对象方法,必须建立在有一个对象的前提的基础上 访问类方法,不需要对象的存在,直接就访问 步骤 1 : ... 
- Java自学-类和对象 单例模式
		Java的饿汉式与懒汉式单例模式 LOL里有一个怪叫大龙GiantDragon,只有一只,所以该类,只能被实例化一次 步骤 1 : 单例模式 单例模式又叫做 Singleton模式,指的是一个类,在一 ... 
- Java自学-类和对象 属性初始化
		如何进行Java的属性初始化 步骤 1 : 对象属性初始化 对象属性初始化有3种 声明该属性的时候初始化 构造方法中初始化 初始化块 . public class Hero { public Stri ... 
- Java自学-类和对象 传参
		Java中的传参 变量有两种类型 基本类型 和类类型 参数也是变量,所以传参分为 基本类型传参 类类型传参 步骤 1 : 基本类型传参 基本类型传参 在方法内,无法修改方法外的基本类型参数 publi ... 
- Java自学-类和对象 this
		Java 中的 this this 这个关键字,相当于普通话里的"我" 小明说 "我吃了" 这个时候,"我" 代表小明 小红说 " ... 
- Java自学-类和对象 引用
		什么是Java中的引用? 引用的概念,如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用. 步骤 1 : 引用和指向 new Hero(); 代表创建了一个Hero对象 但是也仅仅是创建 ... 
- Java自学-类和对象 访问修饰符
		Java的四种访问修饰符 成员变量有四种修饰符 private 私有的 package/friendly/default 不写 protected 受保护的 public 公共的 比如public 表 ... 
随机推荐
- Java String.split()函数分隔回车注意事项
			作者:Sun1956 原文:https://blog.csdn.net/sun1956/article/details/45096117 --------------------- 我们在Java中如 ... 
- dateTime格式转换
			select Convert(varchar(8),GETDATE(),112) Select replace(CONVERT(varchar(8), GETDATE(), 108),':','') 
- webpack的带表达式require和require.context()方法
			带表达式的 require 语句如果 require参数含有表达式(expressions),会创建一个上下文(context),因为在编译时(compile time)并不清楚具体是哪一个模块被导入 ... 
- Python80个练手项目列表
			原文地址:https://www.shiyanlou.com/questions/102676/?utm_source=baidu&utm_medium=cpc&utm_campaig ... 
- C#-DllImport 路径问题
			原文:C# DllImport 相对路径无法找到dll DllImport DLL查找顺序:1.应用程序所在目录2.Windows目录和Windows\System32目录3.环境变量目录 只需要你把 ... 
- 【iCore4 双核心板_FPGA】实验二十:NIOS II之UART串口通信实验
			实验指导书及源代码下载地址: 链接:https://pan.baidu.com/s/1g_tWYYJxh4EgiGvlfkVu1Q 提取码:dwwa 复制这段内容后打开百度网盘手机App,操作更方便哦 ... 
- SpringMVC基本
			SpringMVC和Struts2的区别 SpringMVC与Struts2区别 对比项目 SrpingMVC Struts2 优势 国内市场情况 有大量用户,一般新项目启动都会选用springmvc ... 
- ETF:现金替代标志
			替代标志.表示该成份证券是否可被现金替代 0 – 沪市不可被替代 1 – 沪市可以被替代 2 – 沪市必须被替代 3 – 深市退补现金替代 4 – 深市必须现金替代 5 – 非沪深市场成分证券退补现金 ... 
- WIN10设置notepad++默认打开txt文件
			修改txt的默认打开方式为notepad++.效果如下图所示 修改方式: 1.新建名称为OpenFromNotepad++的txt文档,并将后缀名修改为reg格式(注册表格式),在文件中输入以下内容. ... 
- 升级go mod采坑录
			为了使用go mod把golang升级到了最新的1.12版本,go mod是1.11版本引入的,go mod的引入极大的方便了golang项目的依赖管理,同时把golang项目从GOPATH中解放了出 ... 
