1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java面向对象(接口 匿名内部类 object类 单例 多例)

Java面向对象(接口 匿名内部类 object类 单例 多例)

时间:2018-10-20 05:33:21

相关推荐

Java面向对象(接口 匿名内部类 object类 单例 多例)

1.1接口(抽象类与接口,优先使用接口)

抽象方法和全局常量的集合,使用interface定义,使用implements继承

接口可以多继承(可以向上强制转换)

接口只能有public,一般不写常量

接口可以定义一系列的内部接口,包括:内部的普通类、内部抽象类、内部接口,其中使用 static

定义的内部接口就相当于是一个外部接口。

interface IMessage{public static final String MSG = "JK";public abstract void print();}interface INew{public abstract String get();}// 接口继承接口只能用extendsinterface C extends IMessage,INew{public abstract void printC();}// 抽象类可以继承接口abstract class AbstractMessage implements INew{public abstract void printMessage();}// 一个类可以实现多个接口class MessageImpl extends AbstractMessage implements IMessage,INew{public void print(){}public String get(){return IMessage.MSG;}public void printMessage(){System.out.println("cxl");}}class CImpl implements C{public void print() {}public String get() {return IMessage.MSG;}public void printC() {System.out.println("printC");}}public class JkDemo {public static void main(String[] args) {MessageImpl mg = new MessageImpl();INew news = (INew)mg; // 可以向上转换System.out.println(news.get());AbstractMessage am = (AbstractMessage)mg;am.printMessage();CImpl c = new CImpl();c.printC();}}

接口的定义与使用

定义操作标准

表示能力

在分布式开发之中暴露远程服务方法

1.2工厂设计模式(解耦合、提升代码复用程度)

interface IFruit{public abstract void eat();}// 使用factory可以解耦合class Factory{public static IFruit getInstance(String className){if ("apple".equals(className)) {return new apple() ;}if ("orange".equals(className)) {return new orange() ;}return null ;}}class apple implements IFruit{public void eat(){System.out.println("直接吃苹果!");}}class orange implements IFruit{public void eat(){System.out.println("剥皮吃橘子!");}}public class FactoryDemo {public static void main(String[] args) {IFruit fruit = Factory.getInstance ("apple") ;fruit.eat();fruit = Factory.getInstance ("orange") ;fruit.eat();}}

1.3代理设计模式(Proxy)

代理的本质:每笔真实业务操作都有一个与之辅助的功能类功能完成

interface ISubject{public void save();}class RealSubject implements ISubject{public void save(){System.out.println("救人!");}}// 代理实现class ProxySubject implements ISubject{private ISubject subject; // 真正的操作者public ProxySubject(ISubject subject){this.subject = subject;}public void broke(){System.out.println("代理:破门!");}public void get(){System.out.println("代理:获奖!");}public void save(){this.broke();subject.save();this.get();}}class FactorySubject{public static ISubject getInstance(){return new ProxySubject(new RealSubject());}}public class ProxyDemo {public static void main(String[] args) {ISubject sub = FactorySubject.getInstance();sub.save();}}

接口是Java的核心,慢慢需要学习到接口更多的使用以及设计

开发之中优先考虑接口,以避免单继承局限。

匿名内部类

由于接口、抽象类不能实例化,所以在new时直接跟大括号里面写方法

普通类也可以这么写,但这不规范

object类

所有的类都继承自object,他是最高统一类型

直接输出类是地址,可以覆写

字符串是王道

object可以接收所有的引用类型

包装类

包装类值得是将基本数据类型封装在一个类。

将基本数据类型封装在一个类对象的本质就在于方便使用Object进行接收处理

对象型:Character、Boolean

数值型:Byte、Short、Long、Float、Double、Integer

装箱与拆箱

== 是地址 equals是比较值

主要指的就是使用包装类定义变量、获取变量

包的定义与使用

如果两个类同名,那么定义它们的时候要用全名

访问控制权限

private、default、protected、public

jar包

将生成的程序类打包为jar文件:jar-cvfmy.jarcn

SET CLASSPATH=.;d:\mypack\my.jar

单例设计模式

一个类只能产生一个实例化对象

类中没有构造方法,则会自动生成一个无参的构造方法,但有构造方法的时候,不会生成

只会产生一个对象

饿汉式:只要加载了,一定会创建一个公共的instance对象,追加final

懒汉式:只有调用的时候,才会加载,可能会有性能问题

class Singleton {private final static Singleton instance = new Singleton() ; //饿汉式//private static Singleton instance = null ; //懒汉式public static Singleton getInstance(){//if(instance == null){//instance = new Singleton();//}return instance;}private Singleton() {}public void print() {System.out.println("Hello world ! ");}}public class Dl {public static void main(String[] args) {Singleton s = null;s = Singleton.getInstance();s.print();}}

多例

所谓的多例只是比单例追加了更多个内部实例化对象的产生。

单例、多例构造方法必须私有化

构造方法私有化

类内部一定会有一个static方法用于取得类的实例化对象。多例设计模式已经被枚举所取代了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。