Java编程基础(七)

Java编程基础(七)

接口

理解:特殊的接口类,接口中只能有静态常量(使用static或final修饰的属性)和抽象方法

[public] interface<接口名>{
	[<常量>]
    [<抽象方法>]
}

接口具备三个特征:public、static、final

应用场景:定义标准

注意:JDK1.8的新特性–接口中可以有静态方法和默认方法,实现时仅需要使用default关键字来定义。

深入接口

类–接口的关系:

类与类:单继承(一个类只能有一个父类)

类与接口:多实现(一个类可以实现多个接口)

接口与接口:多继承(一个接口可以继承多个接口)

多态

多态分为两大类:特定的、通用的;四小类:强制的、重载的、参数的、包含的

OCP - 开闭原则

O - open - 在需求升级时,对于创建类是欢迎的

C - close - 在需求升级时,对于修改原有的类是拒绝的

P - principle - 原则

内部内

内部类:一个类中还有另一个类

A类的对象只在B类中使用,并且A类使用到了B类所有的成员属性,就可以将A类变作为B类的成员内部类

A类的对象只在B类中使用,并且A类使用到了B类的静态属性,就可以将A类变作为B类的静态内部类

分类

成员内部类:类似于成员变量;重点:成员内部类可以调用外部类的所有属性

静态内部类:类似与静态变量;重点:静态内部类不可以调用外部类的成员属性,只能调用外部类的静态属性

接口内部类:类似于静态内部类;重点:接口内部类中可以调用接口的静态常量

局部内部类:类似于局部变量

重点:

1、不能使用访问修饰符修饰局部内部类

2、局部内部类调用外部类方法中的局部变量,在JDK1.8开始该变量会自动使用final修饰,变成常量(原因:内部类对象可能被传送到外界,该方法结束后,i作为常量存储咋常量池中,保证了内部类对象在外界正常使用到常量i)

匿名内部类:抽象类的子类对象只使用一次,就可以使用匿名内部类

接口的实现类对象只使用一次,就可以使用匿名内部类

对象转型

1、向上转型;子类类型转父类类型

可以调用父类的非私有化成员变量

可以调用父类的非私有化成员方法

可以调用子类重写父类的成员方法

扩展:向上转型其实就是多态

多态的优点:符合OCP原则的开发,需求更改时,项目的可维护性高

多态的缺点:不能调用子类独有的成员变量和成员方法

2、向下转型:父类类型转子类类型

注意:向下转型是不安全的

向上转型后,才能向下转型;向下转型一定要用instanceof判断,否则可能会有类型转型异常的风险

包装类

含义:Java为每种基本数据类型封装的类

出现原因:Java为纯面向对象语言,但是8种基本数据类型不能创建对象,那么就破坏了Java为纯面向对象语言的特征,所以Java又为每种基本数据类型封装了对应的类,这种类叫做封装类/包装类

StringBuffer

StringBuffer代表可变的字符序列

StringBuffer称为字符串缓冲区

工作原理:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列

StringBuilder

StringBuilder代表可变的字符序列。

StringBuilder称为字符串缓冲区

它的工作原理是:预先申请一块内存,存放字符序列,如果字符序列满了,会重新改变缓存区的大小,以容纳更多的字符序列。

StringBuilder vs StringBuffer

共同点:StringBuilder和StringBuffer都是继承AbstractStringBuilder,所有使用的功能都是调用的父类里的方法,所以这两个类使用上都是一模一样的

StringBuilder:线程不安全的(没有上锁、解锁的过程),单线程的情况下使用

StringBuffer:线程安全的(上锁、解锁的过程),多线程的情况下使用,比起StringBuilder,效率低

深入String创建对象

频繁的字符串拼接请使用StringBuilder或StringBuffer

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ChlinRei

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

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

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

打赏作者

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

抵扣说明:

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

余额充值