/*
你去赌场.
发牌机给你发牌
分析: 定义 发牌机类
定义 扑克类
发牌机有发牌的方法,获取到一张扑克牌
返回值类型的问题
类 : 实际要的是该类的对象
抽象类: 实际要的是子类对象
接口:
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("搓麻是打牌的一种方式,杠开了最爽");
}
} |
|