| 
 
| /* 
 扎金花:
 1.有Card
 
 Card {
 
 成员变量
 
 String  huaSe;// 花色
 int dianShu;// 点数
 
 构造方法
 
 Card(){}/*
 你去赌场.
 
 发牌机给你发牌
 
 分析: 定义 发牌机类
 定义 扑克类
 
 发牌机有发牌的方法,获取到一张扑克牌
 
 
 返回值类型的问题
 
 
 类 : 实际要的是该类的对象
 抽象类: 实际要的是子类对象
 接口:
 
 public Magic  getMagic(){
 return  Magic子类对象;
 }
 
 
 人使用发牌机来发牌
 
 定义类 人, 人拿来一个发牌机
 
 
 */
 
 class FaPaiJiTest{
 
 public static void main(String[] args){
 
 //创建对象
 
 //                FaPaiJi  fpj = new FaPaiJi();
 //                //调用发牌的方法,返回来一张扑克,那么我就用 Card接收
 //
 //                Card c = fpj.faPai();
 //
 //                c.jinHua();
 //                System.out.println("---------------");
 //                Pai pai = fpj.getPai();//调用发牌机的 getPai,返回值类型是 Pai 类型,那么我就用 Pai 接收
 //                pai.shuang();
 //                System.out.println();
 //
 //                System.out.println("---------------");
 //                Magic m = fpj.getMagic();  //调用获取能变魔术的东西的方法
 //                m.bianMoShu();
 
 
 
 //                //创建对象  人
 //                Person p = new Person();
 //                //人调用获取发牌机 ,获得了发牌机
 //                FaPaiJi  fpj = p.getFaPaiJi();
 //                //发牌机调用 发牌的方法,发出来 Card
 //                Card c = fpj.faPai();
 //                //Card 的 jinHua
 //                c.jinHua();
 
 //链式编程
 new Person().getFaPaiJi().faPai().jinHua();
 }
 }
 
 class Person {
 
 //拿来发牌机方法
 
 /*
 两个明确 :
 返回值类型 : FaPaiJi
 参数列表 : 无
 */
 
 public  FaPaiJi getFaPaiJi(){
 System.out.println("发牌机来了~~~~~");
 return new FaPaiJi();
 }
 }
 
 //定义发牌机类
 class FaPaiJi{
 
 /*
 获取牌的方法
 两个明确:
 返回值类型: Card
 参数列表 : 无
 
 */
 public Card faPai(){
 
 System.out.println("发牌开始发牌了.....");
 return new Card();
 }
 /*
 描述不清到底发的是什么牌 ,但是,你还得具体的拿到一个实实在在对象,所以就是Pai 子类对象
 */
 public Pai getPai(){
 return new MaJiang();
 }
 
 
 /*
 发出来的东西,可以的神奇的功能
 
 两个明确 :
 返回值类型  : Magic
 参数列表:  无
 */
 
 public Magic getMagic(){
 return  new Card();
 }
 }
 
 interface Magic{
 public abstract void bianMoShu();
 }
 class Card implements Magic{
 public void jinHua(){
 System.out.println("三个花色一样,就是金花");
 }
 
 public  void bianMoShu(){
 System.out.println("神奇的纸牌,能变魔术,但是重点还是给谁变.....");
 }
 
 }
 
 abstract class Pai{
 //爽的方法
 public abstract void shuang();
 }
 
 class MaJiang extends Pai{
 public void shuang(){
 System.out.println("搓麻是打牌的一种方式,杠开了最爽");
 }
 }
 Card(String huaSe ,int dianShu ){
 this.huaSe = huaSe;
 this.dianShu = dianShu;
 }
 
 }
 2.发牌机
 FaPaiJi{
 成员方法 ,faCaid
 返回值类型 Card
 参数列表 : 无
 
 public Card getCard(){
 //创建 Card 对象
 Card card = new Card("huaSe",dianShu);
 
 return  card;
 
 }
 
 }
 
 3.测试
 main(){
 获取三张牌
 Card c = fpj .getCard();
 Card c2 = fpj .getCard();
 Card c3 = fpj .getCard();
 
 //对象数组,把所有的牌都 拿到手里
 Card[] card = new Card[3];
 card[0] = c;
 card[1] = c2;
 card[2] = c3;
 
 //遍历数组
 
 for
 }
 
 */
 import java.util.Random;
 class CardTest{
 
 public static void main(String[] args){
 
 //创建发牌机对象
 FaPaiJi fpj = new FaPaiJi();
 //调用getCard 获取到 一张Card
 Card c0 = fpj.getCard();
 Card c1 = fpj.getCard();
 Card c2 = fpj.getCard();
 
 
 Card[] cards = new Card[3];
 cards[0] = c0;
 cards[1] = c1;
 cards[2] = c2;
 
 for (  int x=0; x<cards.length;x++ ){
 
 System.out.print(cards[x].getHuaSe() +"" + cards[x].getDianShu()+"  ");
 }
 
 
 }
 }
 
 //定义Card
 
 class Card {
 
 //成员变量
 private String  huaSe;// 花色
 private int dianShu;// 点数
 
 //构造方法
 Card(){}
 Card(String huaSe ,int dianShu ){
 this.huaSe = huaSe;
 this.dianShu = dianShu;
 }
 
 public String getHuaSe(){
 return huaSe;
 }
 public int getDianShu(){
 return dianShu;
 }
 
 }
 
 //定义发牌机
 
 class FaPaiJi{
 public Card getCard(){
 //创建 Card 对象
 // 花色 :  "黑桃","红桃","梅花","方块"
 String[] hs = {"黑桃","红桃","梅花","方块"};  // 0 ,1, 2,3
 
 
 //创建Random对象,
 
 Random r = new Random();
 //使用nextInt(n)
 int x = r.nextInt(4);
 String huaSe = hs[x]; //花色
 
 // 不好用 Math.random() [0-1)
 int dianShu = r.nextInt(13) + 1;  //点数
 
 Card card = new Card(huaSe, dianShu);
 
 return  card;
 
 /*
 生成牌的时候,直接生成52不一样的牌 ,存在Card[]
 随机Random().nextInt(52),返回的是 0-51
 只要 随机数不一样,那么牌肯定不一样
 
 */
 }
 
 }
 
 
 | 
 |