有没有做logo的网站wordpress如何设置点击直接下载

当前位置: 首页 > news >正文

有没有做logo的网站,wordpress如何设置点击直接下载,沧州网络公司排名,路由器屏蔽网站怎么做要定义多种实现的类型#xff1a;JAVA有两种机制#xff1a;接口和抽象类。这两种机制都支持为某些实例方法提供实现#xff0c;但二者有个重要的区别#xff1a;要实现由抽象类定义的类型#xff0c;这个类必须是抽象类的子类。因为Java只允许单继承#xff0c;对抽象类…要定义多种实现的类型JAVA有两种机制接口和抽象类。这两种机制都支持为某些实例方法提供实现但二者有个重要的区别要实现由抽象类定义的类型这个类必须是抽象类的子类。因为Java只允许单继承对抽象类的这种限制严重制约了将其用于类型的定义。而接口就宽松很多只要定义了所有必须的方法任何类都可以实现。 在正式介绍之前普及两个知识点缺省方法和抽象方法。 这两个方法是相反的用途缺省是为了避免子类重写其方法。抽象方法是为了让子类重写方法。 缺省方法default案例 public interface SoyaMilk2 {default void select() {System.out.println(选择);} } 子类 public class RedInter implements SoyaMilk2 {} 抽象方法案例 public interface SoyaMilk2 {abstract void addCondiments();} 子类 接口优先于抽象类优点 1.很容易改造现有的类使其实现一个新的接口。 2.接口是定义minxin混合类型的理想选择。 3.接口允许构建非层次结构的类型框架。 案例 public interface Singer {//唱歌AudioClip sing(Song s); }public interface SongWriter {//作歌Song compose(boolean hit); } public intreface SingerSongWriter extends Singer, SongWriter {//弹奏AudioClip strum();//激情表演void actSensitive(); } 抽象类 Singer.java public abstract class Singer {//唱歌public abstract AudioClip sing(Song s); }SongWriter.java public abstract class SongWriter {//作歌public abstract Song compose(boolean hit); }SingerSongWriter.java //在设计的时候感觉很不好设计。因为继承只能继承自一个类那势必其他的方法需要重新声明 public abstract class SingerSongWriter extends SongWriter {//唱歌public abstract AudioClip sing(Song s);//弹奏public abstract AudioClip strum();//激情表演public abstract void actSensitive(); } 在引入抽象骨架概念之前先分别看下接口和抽象类的案例实现 1接口案例 定义接口 public interface IPeple {void drink();void eat();void ethnicGroup();} 分别定义子类 public class AsiaPeple implements IPeple {Overridepublic void drink() {System.out.println(人都会喝水);}Overridepublic void eat() {System.out.println(人都会吃饭);}Overridepublic void ethnicGroup() {System.out.println(亚洲人大多数是黄种人);} } public class AmericanPeple implements IPeple {Overridepublic void drink() {System.out.println(人都会喝水);}Overridepublic void eat() {System.out.println(人都会吃饭);}Overridepublic void ethnicGroup() {System.out.println(美洲人大多数是白种人);} } 问题 drink和eat方法代码重复性很高需要改造。 2抽象类案例 定义抽象类 public abstract class AbsPeple {void drink(){System.out.println(人都会喝水);}void eat() {System.out.println(人都会吃饭);}abstract void ethnicGroup(); } 分别定义子类 public class AmericanPeple extends AbsPeple {Overridevoid ethnicGroup() {System.out.println(美洲人大多数是白种人);} } public class AsiaPeple extends AbsPeple{Overridevoid ethnicGroup() {System.out.println(亚洲人大多数是黄种人);}public static void main(String[] args) {AsiaPeple asiaPeple new AsiaPeple();asiaPeple.eat();asiaPeple.drink();asiaPeple.ethnicGroup();AmericanPeple americanPeple new AmericanPeple();americanPeple.eat();americanPeple.drink();americanPeple.ethnicGroup();System.out.println(asiaPeple);System.out.println(americanPeple);} } 结果打印 人都会吃饭 人都会喝水 亚洲人大多数是黄种人 人都会吃饭 人都会喝水 美洲人大多数是白种人 com.example.exceldemo.abstact.entity.AsiaPeple7699a589 com.example.exceldemo.abstact.entity.AmericanPeple58372a00 缺点一旦一个类继承了抽象类AbsPeple那么它就无法继承其它类。而且我们也知道继承实现有很多问题太多的继承会造成代码耦合性问题不利于以后的维护和升级。抽象骨架氤氲而生。 3抽象骨架概念抽象类继承接口不要求重写接口中缺省、抽象方法 可以将接口和抽象类的优点结合到一起。其中接口用来定义类型可能还会提供一些默认的方法而骨架实现类负责在基本接口方法之上实现其余的非基本接口方法ethnicGroup()方法。扩展骨架实现类可以省去实现接口需要的大部分工作。这就是模板方法【设计模式】中级面试很多面试官喜欢问设计模式 定义抽象骨架 public abstract class AbsPeple implements IPeple{Overridepublic void drink() {System.out.println(人都要喝水);}Overridepublic void eat() {System.out.println(人都要吃饭);} } 定义私有类及成员AsiaPeple重写接口统一方法成员变量获取单独的重写方法 public class AsiaPeple implements IPeple {private AsiaPepleIpml asiaPepleIpml new AsiaPepleIpml();private static class AsiaPepleIpml extends AbsPeple {Overridepublic void ethnicGroup() {System.out.println(亚洲人大多数都是黄种人);}}public static void main(String[] args) {AsiaPeple asiaPeple new AsiaPeple();asiaPeple.eat();asiaPeple.drink();asiaPeple.asiaPepleIpml.ethnicGroup();}Overridepublic void drink() {asiaPepleIpml.drink();}Overridepublic void eat() {asiaPepleIpml.eat();}Overridepublic void ethnicGroup() {throw new UnsupportedOperationException(不重新方法);} }打印结果 人都要吃饭 人都要喝水 亚洲人大多数都是黄种人Process finished with exit code 0 AsiaPeple类 可以实现多个接口和定义多个抽象骨架实现类使得AsiaPeple类非常非常灵活多变。 骨架实现类的美妙在于他们提供了抽象类的所有实现帮助又不存在将抽象类用于类型定义时所面临的严格限制。接口本身存在的任何默认方法对于这个类还是有帮助的。此外仍然可以利用骨架实现来帮助实现者完成任务实现该接口的类可以引入一个私有的、扩展了骨架实现类的内部类并包含一个这个内部类实例然后将对接口方法的调用转发给这个实例。这种技术被称为模拟多重继承。 因为骨架实现是为了继承而设计的好的文档在骨架实现中是绝对必要的无论它是由接口上的默认方法组成还是单独的抽象类。 总而言之要定义支持实现的类型接口通常是最佳选择。如果导出一个不是很简单的接口请务必考虑配合提供一个骨架实现。在可能的情况下应该通过接口上的默认方法来提供骨架的实现以便该接口的所有实现者都可以使用。即便如此接口上的限制常会使得抽象类形式成为骨架实现的不二之选。 所有文章无条件开放顺手点个赞不为过吧