day12-接口;类关系;内部类;设计模式

接口

Interface

定义接口的关键字;
语法:public interface 接口名{}
接口中不能被实例化对象,接口中也没有构造方法;
主要是解决Java中单继承功能变弱的问题;
Java1.8之前,接口中只有抽象方法和常量,但是public,static,final,abstract等可以省略;
1.8开始,可以有静态,也可以有default(可以解决普通类中的成员方法);
静态方法直接使用接口名调用即可;
Default方法,实现类可以调用,也可以覆写。
1.8开始,支持private方法。

注意

接口和接口是多继承,中间用逗号隔开;
类和接口直接是多实现;
一个普通类实现一个接口,需要实现所有的抽象方法;

类关系

继承

接口A extends 接口B,接口C

实现

类A implements 接口B,接口C
类和接口是多实现

依赖

某个类的局部变量是另一个类对象引用,这种关系是临时性的,方法执行结束,关系就不存在了。

关联

比依赖时间要长,通过对象或者实例让两个类产生关系。

聚合

整体和局部可以分离,各自有各自的生命周期。

组合

组合关系要强于聚合关系,同样是整体和局部,只不过不可分离,局部没有独立的声明周期。
聚合和组合是关联的两种特例,是更强的关联。

内部类

在一个事物的内部,还有一部分需要一个完整的结构进行描述,而这个结构只服务外部类。
类体中还有一个类。
内部类有一个重要作用,可以访问外部类的私有属性。

成员内部类

可以等同看作成员变量,成员内部类不能有静态声明;成员内部类可以直接访问外部类所有属性,可以使用访问权限控制修饰符。
内部类类名:外部类$内部类

静态内部类

静态内部类可以看作静态变量;
静态内部类可以有任何声明;
静态内部类可以直接访问外部类静态数据,无法直接访问成员数据;

局部内部类

局部内部类等于局部变量;局部内部类访问外部方法局部变量的时候,该变量需要加上final修饰,1.8之后开始final可以省略;不管外部方法是静态还是成员,局部内部类都不能使用static修饰类,同时类中也不能有静态声明;局部内部类调用,只能在该方法体内部。
如果外部方法是成员方法,则局部内部类可以直接访问外部类任何属性;
如果外部方法是静态方法,则局部内部类中不能直接访问外部类的成员属性。
局部内部类名字:外部类$1内部类

匿名内部类

匿名内部类,指在调用方法的时候,需要传入一个对象,此时可以不传递实现类对象,传递一个匿名内部类,普通类也可以,你们内部类就等于普通类的子类。
创建内部类的时候,系统会帮我们自动创建一个内部类对象,并且只创建一次。
优点:少定义一个类。
缺点:无法重复使用。
不能有静态声明,但是可以声明常量,静态变量和静态方法不能声明。
类名:外部类$1
一般应用在方法调用的时候,方法参数中一个为匿名内部类。

设计模式

概述

在编码实现中,程序员发现有很多编码方式经常被用到,所以总结出来,形成固定写法,一般表示最佳实践,就是设计模式。

单例模式

概述

让某个类只能被实例化一次,一般这个实例化对象由这个类去创建,然后提供一个公共的获取唯一对象的一个接口。
根据对象创建时机不同,被分为两种方式:懒汉模式;饿汉模式。

实现步骤

构造方法私有化;
创建一个公共的静态方法,用户获取当前类的对象,并且保证只创建一次(创建一个当前类类型的变量,必须是静态变量来存储对象);
创建一个私有化静态变量来存储当前类的对象。

饿汉模式

类加载的时候就已经创建对象;

懒汉模式

第一次使用的时候再创建对象;

工厂模式

把创建语句封装到工厂类中,提供一个获取对象的方法即可;
所有用到这个对象的地方,都去工厂中获取,把类之间的强依赖关系变弱,灵活性更高;
定义一个用于创建产品的接口,由子类决定生产什么产品;
工厂模式是创建型模式,它提供了一种创建对象的最佳方式;
在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过一个公共的接口来指向新创建的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微-程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值