Java项目实战开发Day05 2020-03-20

本文深入探讨Java中的this关键字、setter和getter方法、toString重写及final修饰符的使用,通过一个详细的扑克牌项目实例,展示了面向对象编程(OOP)在实际开发中的应用。项目包括牌的生成、洗牌和显示等功能,代码结构清晰,适合初学者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容

1.this
2.setter和getter
3.toString
4.final
5.扑克牌项目

一.this

详细请看之前的一篇文章:https://www.jianshu.com/p/fd56fc887de0

二.setter和getter(前面也学过)

1.引

如人名,谁都可以喊你,就是得到你的名字,也就是得到某个值,就是getter方法,你自己也可以改一下名,也就是修改某个值,就是setter方法。

2.使用技巧

AS里面Ctrl和回车是快捷键,可以调用很多东西,比如构造方法,在这里
AS里面用Ctrl+回车可以调用setget方法
②建议将setget方法写在最后面,目的是为了使代码更容易理解。

三.toString

详情请看之前的一篇文章:https://www.jianshu.com/p/8e404641b56c

简介

当使用print输出一个对象时,就会去这个对象内部查找toString方法,如果没有实现,那么就会从父类Object里面去查找toString的实现。Object里面的toString方法默认返回 类名@hasCode,这个东西看不太懂,所以我们一般要重写toString方法,重写的目的是为了在调试的时候快速获取这个对象的信息

四.final

详细请看之前的一篇文章:https://www.jianshu.com/p/8ea1a41a543b
这里再强调一个事情,就是通常一个常量我们全部用大写字母表示

五.扑克牌项目

1.项目介绍

生成一副牌,并打乱顺序

2.项目结构

一共四个类。分别为Constants、Myclass、Poker、PokerManager

3.具体代码

constants

package Poker;

//放一些固定的东西
public class Constants {
    
    //点数
    public static final String[] POKER_DOTS = new String[] {
            "2","3","4","5","6","7",
            "8","9","10","J","Q","K","A"
    };
    
    //用一个数组保存所有的花色
    public static final String[] POKER_PICS = new String[] {"♥","♠","♣","♦"};
    
}

Poker

package Poker;

//管理一张牌的信息
class Poker{
        
    private String dot;//保存点数
    private String pic;//保存花色
    
    //提供构造方法
    public Poker(String dot,String pic) {
        this.dot = dot;
        this.pic = pic;
    }
   
    //重写toString
    public String toString() {
        return dot+pic;
    }
    
    //setter和getter
    public String getDot() {
        return dot;
    }
    public String getPic() {
        return pic;
    }
    
    public void setDot(String dot) {
        this.dot = dot;
    }
    
    public void setPic(String pic) {
        this.pic = pic;
    }
    
    
}

PokerManager

package Poker;

import java.util.*;

//管理一副牌的所有操作(生成牌,洗牌,显示牌)
public class PokerManager {

    //创建保存一副牌的数组
    private ArrayList<Poker> pokers;
    
    //使用构造方法,产生所有的牌
    public PokerManager() {
        //初始化数组
        pokers = new ArrayList<>();//动态分配
    }
    
    //生成一副牌
    public void generateOnePackOfCard() {

        for(int i = 0;i < Constants.POKER_DOTS.length;i++) {
            
            //取出i对应的点数
            String dot = Constants.POKER_DOTS[i];
            
            //为这个点数创建四种花色
            for(int j = 0;j < Constants.POKER_PICS.length;j++) {
                
                //取出j对应的花色
                String pic = Constants.POKER_PICS[j];
                
                //创建一张牌
                Poker poker = new Poker(dot,pic);
                
                //保存这张牌
                int index = i*4 + j;
                pokers.add(poker);
            }
        }
    }
    
    //显示一副牌
    public void show() {
        int index = 0;
        for(Poker poker:pokers) {
            
            System.out.print(poker);//注意这里是poker
            
            if((index+1) % 8 == 0) {
                System.out.println("");
            }
            
            index++;
        }
    }

    //洗牌
    public void shuffle() {
        Collections.shuffle(pokers);//使用系统打乱方法
    }
}

MyClass

package Poker;

public class MyClass {

    public static void main(String[] args) {
        //以下注释的代码体现了面向过程思想
        /*
        //用一个数组保存所有的点数
        String[] dots = new String[] {
                "2","3","4","5","6","7",
                "8","9","10","J","Q","K","A"
        };
        
        //用一个数组保存所有的花色
        String[] pics = new String[] {"♥","♠","♣","♦"};
        
        //用数组保存所有的扑克牌
        Poker[] pokers = new Poker[52];
        
        //生成每一张牌,并保存到数组中
        int index = 0;
        for(String dot:dots) {
            for(String pic:pics) {
                //创建一张扑克牌
                Poker poker = new Poker();
                poker.dot = dot;
                poker.pic = pic;
                pokers[index] = poker;
                index++;
            }
        }
        
        //输出牌
        for(Poker poker:pokers) {
            System.out.print(poker.dot+poker.pic+" ");
        }
        */
        
    
        //1.创建管理器
        PokerManager manager = new PokerManager();
        
        //2.生成一副牌
        manager.generateOnePackOfCard();
        
        //3.打乱一副牌
        manager.shuffle();
        
        //4.显示一副牌
        manager.show();
        
        
        
    }
}

总结

今天还是补充了一些其他的知识点,特别是扑克牌项目,让我对一个程序的概念理解更加深刻了。同时对前面的部分知识也进行了复习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值