diff --git a/s-day02/src/com/inmind/generic04/Demo08.java b/s-day02/src/com/inmind/generic04/Demo08.java new file mode 100644 index 0000000..7045233 --- /dev/null +++ b/s-day02/src/com/inmind/generic04/Demo08.java @@ -0,0 +1,32 @@ +package com.inmind.generic04; + +public class Demo08 { + public static void main(String[] args) { + //买了手机和平板 + Phone phone = new Phone(); + Pad pad = new Pad(); + phone.call(); + pad.playApp(); + /*//手机坏了,平板坏了,找售后工程维修 + Factory factory = new Factory(); + //调用工厂的维修方法 + phone = factory.fixPhone(phone); + pad = factory.fixPad(pad);*/ + //不使用泛型,使用多态的方法 + /*Factory factory = new Factory<>(); + Object o = factory.fixObj(phone); + Pad o1 = (Pad) o; + o1.playApp();*/ + //使用泛型的方式 + Factory phoneFactory = new Factory<>(); + Phone fixedPhone = phoneFactory.fix(phone); + + //修平板就找平板工厂 + Factory padFactory = new Factory<>(); + Pad fixedPad = padFactory.fix(pad); + + + fixedPhone.call(); + fixedPad.playApp(); + } +} diff --git a/s-day02/src/com/inmind/generic04/Factory.java b/s-day02/src/com/inmind/generic04/Factory.java new file mode 100644 index 0000000..03fa36a --- /dev/null +++ b/s-day02/src/com/inmind/generic04/Factory.java @@ -0,0 +1,36 @@ +package com.inmind.generic04; +/* + 能不能在一个类中定义一个未知类型,接收的具体的是什么类型,就返回什么类型,这个数据类型要动态, + 并省略掉强转操作,也避免类型转换异常??? + 可以,使用泛型类,在类名加上<任意大写字母> + + 泛型类:就是在类中定义了一个未知的类型(动态的类型). + + 泛型类的T类型何时确定? + 创建对象时才确定 + */ +public class Factory { + + //多态的写法 + /*public Object fixObj(Object o) { + System.out.println("对象已修好"); + return o; + }*/ + + //使用T类型 + public T fix(T t) { + System.out.println("对象T已修好"); + return t; + } + + /*//维修手机方法 + public Phone fixPhone(Phone phone) { + System.out.println("手机修好了"); + return phone; + } + //维修pad方法 + public Pad fixPad(Pad pad) { + System.out.println("平板修好了"); + return pad; + }*/ +} diff --git a/s-day02/src/com/inmind/generic04/Pad.java b/s-day02/src/com/inmind/generic04/Pad.java new file mode 100644 index 0000000..bd1aa60 --- /dev/null +++ b/s-day02/src/com/inmind/generic04/Pad.java @@ -0,0 +1,7 @@ +package com.inmind.generic04; + +public class Pad { + public void playApp(){ + System.out.println("看抖音"); + } +} diff --git a/s-day02/src/com/inmind/generic04/Phone.java b/s-day02/src/com/inmind/generic04/Phone.java new file mode 100644 index 0000000..cd0fe94 --- /dev/null +++ b/s-day02/src/com/inmind/generic04/Phone.java @@ -0,0 +1,8 @@ +package com.inmind.generic04; + +public class Phone { + + public void call() { + System.out.println("打电话"); + } +}