Java第一阶段(6)【 面向对象 - 类与对象】 11.13

面向对象

  • 容器:数组、对象、集合
    对象容器:长度是固定的,可以装任何数据类型,所有的元素的数据必须一致
    数组容器:长度固定,可以装任何数据类型,数据类型可以不一样,还可以装方法

  • 储存一个学生的信息
    学号 String;姓名 String;年龄 int;性别 char;

  • 怎么装:

  1. 创建这个容器的模版 → 类
  2. 在这个类中规定存储的所有数据以及对应的数据类型,以及那些方法
  3. 在适当的地方根据模板创建出真正的容器出来(对象)
  4. 往里面装数据
  • 内容

1. 成员属性
作用:规定了可以存哪些数据以及对应的数据类型
( 格式 ) 修饰符 数据类型 取个名字;
    public String num;
    public String name;
    public int age;
    public char sex;
2. 构造方法
作用:1.为了能够创建出对象
   2.初始化一些数值
( 格式 ) 修饰符 方法名(参数列表){方法体};
    第一种:( 空参 ) public Student(){}
    第二种:( 有参 ) public Student(String no , String n , int a){
            num = no;
            name = n;
            age = a;
            }

  • 调用有参的构造方法来创建学生
    ( 格式 ) 类名 取个名字 = new 构造方法名(参数列表);
       Student stu = new Student(“JF1810”,“张飞”,18);

3.成员方法
作用:储存哪些方法,这个对象具有哪些功能
( 格式 ) 修饰符 返回值类型 方法名(参数列表){方法体}
   public int add(int a,int b){
    return a+b;
    }

  • 在main方法中调用,根据学生的模版,创建出学生对象容器
public static void main{
类名 取个名字 = new 构造方法名();
Student stu  = new Student();
stu.num = "JF1810";
stu.name = "刘";
//使用学生加法
int sum = stu.add(1,2);
System.out.println(sum);
}
  • 如何遍历一个对象
    定义一个数组,数组的元素是Student Student[]
Student[] stus = {stu1,stu2,stu3};
for(int i = 0; i <stus.length;i++){
	System.out.println(stu[i].num + "," + stu[i].name);
}

方法的重载(重点!!!)

出现在同一个类中,方法名相同,参数列表不同(个数不同或顺序不同或数据类型不同),与返回值无关

练习

一.、基础
1.创建一个 学生类 Student,属性:姓名,年龄,学号,手机号
2.学生有一个自我介绍的方法showMe,(我的名字叫XX,我XX岁)
3.将自己本排的6位同学创建出来,分别调用他们各自的自我介绍的方法
4.将本排的同学放进数组中,遍历出他们的学号和姓名。
---------Student类-----------

package test1;
public class Student {
	// 学生姓名
	String name;
	// 学生年龄
	int age;
	// 学生学号
	String num;
	// 学生手机号
	String tel;

	public Student(String n, String na) {
		// 传入的学号
		num = n;
		// 传入的名字
		name = na;
	}

	// 自我介绍的方法
	public void showMe(String name, int age) {
		System.out.println("我的名字是" + name + ",我" + age + "岁");

	}
}

---------Test类-----------

package test1;
public class Test {
	public static void main(String[] args) {
		Student stu1 = new Student("JF181001", "翁仕权");
		stu1.showMe("翁仕权", 25);
		Student stu2 = new Student("JF181002", "吴宇晨");
		stu1.showMe("吴宇晨", 23);
		Student stu3 = new Student("JF181003", "白国磊");
		stu1.showMe("白国磊", 30);
		Student stu4 = new Student("JF181004", "万静晨");
		stu1.showMe("万静晨", 20);
		Student stu5 = new Student("JF181005", "张志杰");
		stu1.showMe("张志杰", 22);
		Student stu6 = new Student("JF181006", "叶光泽");
		stu1.showMe("叶光泽", 24);
		System.out.println();
		System.out.println("----------------------");
		Student[] stus = { stu1, stu2, stu3, stu4, stu5, stu6 };
		for (int i = 0; i < stus.length; i++) {
			System.out.println(stus[i].name + "的学号是:" + stus[i].num);

		}
	}
}

二、猜拳游戏(面向对象版)
1.将猜拳游戏改造成面向对象版:玩家类,机器人类,裁判类,运行类,专门写main的类
2.玩家类:玩家姓名,出拳数,出拳的方法
3.机器人类:名字,出拳数,出拳的方法
4.裁判类:名字,玩家得分,电脑得分,判断胜负的方法
5.运行类Game:start(),承载main方法的类 Test
6.要求一开始玩家输入姓名开始游戏(s.next()方法输入字符串 )
7.赢一局得2分,先到10分者获胜(判断特殊情况)
8.8-重新开始,0-退出游戏

---------Player类-----------

package guess;

import java.util.Scanner;

//玩家的模版
public class Player {
	
	//成员属性   全局变量 当前这个类中所有的地方都能直接调用到
	
	//名字
	public String name;
	//出拳数
	public int num;
	

	//构造方法
	public Player(){
		name = "玩家";
		
	}
	
	
	//成员方法   出拳的方法      返回值    参数列表
	public void guess(){
		//玩家 出拳  键盘输入   局部:只能在当前这个方法内调用到
		Scanner s = new Scanner(System.in);
		//控制台 让玩家输入一个数字,将数字存储在 
		num =   s.nextInt();
		
		switch(num){
		
		case 1:
			System.out.println(name + "出的是:石头");
			break;
		case 2:
			System.out.println(name + "出的是:剪刀");
			break;
		case 3:
			System.out.println(name + "出的是:布");
			break;
		
		default:
			break;
			// 重新开始 continue      退出游戏	  不方便
		}	
	}	
}

---------Robot 类-----------

package guess;

import java.util.Random;

//机器人的模版
public class Robot {
	
	public String name = "阿尔法狗";
	public int num;
	
	public Robot(){
		
	}
	
	
	//机器人出拳的方法
	public void ranNum(){
		
		Random r = new Random();
		
		num = r.nextInt(3)+1;//   1 2 3
		
		switch(num){
		
		case 1:
			System.out.println(name + "出的是:石头");
			break;
		case 2:
			System.out.println(name + "出的是:剪刀");
			break;
		case 3:
			System.out.println(name + "出的是:布");
			break;
		
		default:
			break;
			// 重新开始 continue      退出游戏	  不方便
		}
	}
}

---------Judge 类-----------

package guess;
//裁判的模版
public class Judge {
	
	
	//裁判的名字
	public String name;//null
	//玩家得分
	public int playerScore;// 0
	//电脑得分
	public int robotScore;// 0
	
	
	public Judge(){
		
	}
	//方法的重载:出现在同一个类中,方法名相同,参数列表不同( 数量  ||顺序 ||  数据类型  ),与返回值无关
	public Judge( String n  ){
		
		name = n;
		
	}
	
	//判断           玩家出的什么拳  num    电脑出的什么拳  num
	public void check( int pNum ,int rNum ,String pName,String rName ){
	    
		if(pNum==rNum){
			System.out.println(name +"判定平局!" );
		}else if(pNum==1&&rNum==2 || pNum==2&&rNum==3  || pNum==3&&rNum==1){
			System.out.println(name +"判定【"+ pName +"】胜。"  );
			playerScore+=2;
			
		}else{
			System.out.println(name +"判定【"+ rName +"】胜。"  );
			robotScore+=2;
		}
	}
}

---------Game 类-----------

package guess;

import java.util.Scanner;

//游戏运行的类
public class Game {
	
	
	public void start(){
		// 面向对象的编程  保证 操作的 是同一个对象      不要到处new对象
		//游戏的过程
		welcome();
		
		Scanner s = new Scanner(System.in);
		Player p = new Player();
		Robot ro = new Robot();
		Judge ju = new Judge("正义审判");
		
		System.out.println("请输入昵称:");
		p.name = s.next(); //存在 玩家 的 name里面
		System.out.println("欢迎您:"+ p.name);
		
		while(true){
			System.out.println("请出拳:1-石头  2-剪刀 3-布  9-重新开始  8-退出游戏");
			//调用玩家出拳的方法
			p.guess();
			//判断退出游戏
			if(p.num==8){
				System.out.println("谢谢再见!");
				break;//return;
			}
			
			//判断重新开始
			if(p.num==9){
				System.out.println("游戏即将重新开始。。。");
				//还原数据   分数 还原
				ju.playerScore = 0;
				ju.robotScore = 0;
				continue;
			}
			
			//先判断玩家出拳的合法性
			if(p.num<1 || p.num>3){
				System.out.println("出拳有误!");
				continue;
			}

			//电脑出拳
			ro.ranNum();
			
			//裁判判断
			ju.check(p.num, ro.num, p.name, ro.name);
			
			//显示当前比分
			System.out.println("当前比分-----"+ ju.playerScore+":"+ju.robotScore);
			
			//结束的判断
			if( ju.playerScore==10 || ju.robotScore==10  ){
				
				System.out.println("。。游戏结束。。");
				if( ju.playerScore > ju.robotScore  ){
					System.out.println("最终"+ p.name +"获得胜利!");
				}else{
					System.out.println("最终"+ ro.name +"获得胜利!");
				}
				
				
				//结束游戏  continue  break  return 
				break;	
			}
		}
	}
	
	
	
	public void welcome(){
		System.out.println("*************");
		System.out.println("欢迎来到猜拳游戏");
		System.out.println("*************");
	}
}

---------Test 类-----------

package guess;
public class Test {
	public static void main(String[] args) {
		//创建一个游戏运行的对象容器  调用 容器中的方法
		Game g = new Game();
		g.start();	
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42829628/article/details/84031873