JAVA面对对象

定义类的语法:

[修饰符]  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.练习过程中要创建用户自定义的构造方法,以免出现问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值