定义类的语法:
[修饰符] class 类名
{
定义构造方法;
定义属性;
定义方法;
}
注意:通过new关键字调用某个类的构造方法即可创建该类的实例
语法:
类 对象名 = new 构造方法()
方法(method)的声明格式:
[<修饰符>] <返回类型><方法名>([参数列表]){方法体}
可变方法的声明格式:
[<修饰符>]<返回类型><方法名>(变量类型...变量名){方法体}
重构英雄类
定义一个int类型的变量output,表示英雄的血量
当battle()方法执行一次,output变量值减少10
在控制台随机输入一个小于100的整数,将该整数值赋于变量output,作为英雄的初始血量
在main方法中循环调用英雄的battle()方法
如果英雄的血量已经小于或者等于零,则停止循环,系统给出友好提示信息,英雄已经牺牲,否则最终输出英雄的血量
package edgm;
import java.util.Scanner;
public class Hero {
int output;
int count=1;
public void battle() {
output=output-10;
if(output<=0) {
System.out.println("对不起你的英雄已经牺牲");
System.exit(0);
}
System.out.println("第"+count+++"次攻击,你英雄当前血量"+output);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Hero hero = new Hero();
Scanner input =new Scanner(System.in);
System.out.println("请输入英雄的血量");
hero.output=input.nextInt();
for(int i=0;i<6;i++) {
hero.battle();
}
System.out.println("战斗结束后你的英雄血量值="+hero.output);
}
}
创建Dota游戏中的防御塔类
通过两个坐标属性显示防御塔所在的位置
package edgm;
public class fangyu {
int x;
int y;
public static void main(String[] args) {
fangyu td=new fangyu();
td.x=10;
td.y=20;
System.out.println("防御塔横坐标="+td.x+"纵坐标="+td.y);
}
}
设计一个英雄类(定义属性、方法)
String name;
String nian;
String sex;
public void run(int speed) {
System.out.println(speed+"m/s的速度飞速狂奔");{}
}
public static void main(String[] args) {
Hero hero1=new Hero();
hero1.name="黑夜传说";
hero1.nian="28";
hero1.sex="男";
System.out.println("英雄的名字:"+hero1.name);
System.out.println("英雄的年龄:"+hero1.nian);
System.out.println("英雄的性别:"+hero1.sex);
hero1.run(8);
}
}
在英雄类中定义战斗方法(battle)并测试该方法的调用
package edgm;
import java.util.Scanner;
public class Heros {
String name;
String age;
public void battle() {
System.out.println(name+"在肆无忌惮的战斗,他的年龄只有"+age+",可他的血量不足30%了");
}
public static void main(String[] args) {
Heros heros=new Heros();
heros.name="黑夜传说";
heros.age="18";
heros.battle();
}
}
采用可变形参方法计算给定的多个整数之和
package edgm;
public class Test {
public static int add(int...num) {
int sum=0;
for (int i:num) {
sum+=i;
}
return sum;
}
public static void main(String[] args) {
System.out.println(add(1));
System.out.println(add(1,2));
System.out.println(add(1,2,3));
System.out.println(add(new int[] {1,2,3}));
}
}
注意:可变个数形参和数组形参的区别
1.定义方式不同
代码
可变个数形参:
数组形参:
public static void testVarargs(String... users);
public static void testVarargs(String[] users);
2.调用方式不同
代码
可变个数形参:
数组形参:
testVarargs("小文","艺濡","晨曦");
testVarargs(new String[]{"小文","艺濡","晨曦"});
文章目录
构造方法的定义
构造方法的特点
构造方法的作用(如何利用构造方法创建实例)
实例练习
总结
前言
在今天的课程里,我们学习了什么是构造方法和构造方法的作用是什么。
一、构造方法的定义
定义:就是类构造对象时调用的方法,主要用来实例化对象。构造方法分为无参构造方法、有参构造方法
二、构造方法的特点
构造方法的方法名必须与类名一样。
构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
构造方法不能作用是完成对象的初始化工作。
构造方法不能由编程人员调用,而要系统调用。
构造方法可以重载,即在一个类中创建多个同名但不同参数的构造方法
三、构造方法的作用(如何利用构造方法创建实例)
1.构造方法是类中定义的特殊方法,方法名称必须与类名一致。构造方法的作用是创建实例化对象。(若是在类中没有创建用户自定义的构造方法,则java会提供一个缺省默认的无参构造方法)。
2.利用“new 构造方法([参数列表])”用于创建对象实例。
四、实例练习
1.在创建对象的时候,对象成员可以由构造函数方法进行初始化。(constructor;构造函数)
new对象时,都是用构造方法进行实例化的;
例如;Soldiers int = new Soldiers();
2.实例练习
package edgm;
//定义士兵类并初始化2个士兵对象创建士兵类
//定义有一个String类型参数name,代表士兵的姓名,两个int类型变量x和y
//分别表示士兵所在的坐标位置,x代表横坐标,y代表纵坐标在士兵类中定义一个带3个参数的构造方法,它们分别对应士兵的姓名、横坐标和纵坐标。
//在主方法中利用for循环创建2个士兵对象,每个士兵对象的姓名以及x,y坐标均通过控制台输入。
import java.util.Scanner;
public class Soldiers {
String name; //姓名
int x; //横坐标
int y; //纵坐标
public Soldiers(String name,int x,int y) {
System.out.println("英雄名字:"+name+";x="+x+";y="+y);
}
public static void main(String[] args) {
Scanner Scanner=new Scanner(System.in);
for(int i=0;i<5;i++) {
System.out.println("请输入第"+(i+1)+"个士兵的名字:");
String name=Scanner.next();
System.out.println("请输入横坐标:");
int x=Scanner.nextInt();
System.out.println("请输入纵坐标:");
int y=Scanner.nextInt();
Soldiers s = new Soldiers(name,x,y);
}
}
}
总结
注意事项
1.过程中构造方法不能有返回值
2.构造方法名称一定要与类名一致
3.练习过程中要创建用户自定义的构造方法,以免出现问题