/*
返回值类型的问题
类名: 作为返回值类型,实际上要的该类的对象.
抽象类: 作为返回值类型,实际上要的该类子类的对象.
接口: 作为返回值类型,实际上要的该类子类的对象( 子类就是它 实现类 )
发牌机发扑克案例
发牌机 类 {
发扑克
public Card faCard(){
Syso("发牌");
Card c = new Card();
return c;
}
//发牌
public Pai faPai(){
Pai p = new Card();
return pai;
}
// 发具有魔术功能的东西
public Magic faMagic(){
Magic m = new 子类 ;
return m;
}
}
扑克类
class Card extends Pai implements Magic {
炸金花
public void zhaJinHua(){
syso(" 扎金花 ");
}
//重写
}
interface Magic {
}
*/
class FaPaiJiTest{
public static void main(String[] args){
//创建发牌机
// FaPaiJi fpj = new FaPaiJi();
// // 根据返回值类型, 定义变量接收
//// Card card = fpj.faCard();
//// card.zhaJinHua();
//
// //根据返回值类型,定义变量 Pai
//// Pai p = fpj.faPai();
//// p.high(); // 运行 看右边
//
// //根据返回值类型,定义变量 Magic
//
// Magic m = fpj.faMagic();
// m.moShu();
//创建人
Person p = new Person();
FaPaiJi fpj = p.getFaPaiJi();
Card c = fpj.faCard();
c.zhaJinHua();
System.out.println("------------");
//改进 链式编程
new Person().getFaPaiJi().faCard().zhaJinHua();
}
}
//人类 , 拿来发牌机
class Person{
// 拿发牌机方法
public FaPaiJi getFaPaiJi(){
System.out.println("人拿来了发牌机 ");
return new FaPaiJi();
}
}
//发牌机
class FaPaiJi{
//发扑克的方法
public Card faCard(){
System.out.println("开始发牌.....");
//创建Card
// Card c = new Card();
// return c;
return new Card(); //匿名对象
}
// 发牌 (抽象 牌 ,扑克 ....)
public Pai faPai(){
System.out.println("发牌机 2.0 , 开始发牌.....");
//创建 Pai的 子类对象
Pai p = new Card();
return p;
}
// 发具有魔术功能的东西
public Magic faMagic(){
System.out.println("发牌机 3.0 , 开始发牌.....");
//创建 Magic的 子类对象
Magic m = new Card();
return m;
}
}
//定义抽象 牌
abstract class Pai{
// 爽
public abstract void high();
}
//定义Card
class Card extends Pai implements Magic{
//炸金花
public void zhaJinHua(){
System.out.println(" 扎金花 ");
}
public void high(){
System.out.println("没事打个扑克 , high一下 下 ");
}
//重写
public void moShu(){
System.out.println("扑克 , 变魔术,show 一下 ");
}
}
//定义接口
interface Magic {
//魔术方法
public abstract void moShu();
} |
|