Java final关键字、抽象类、模板方法设计模式、接口interface

本文探讨Java中的final关键字、抽象类和模板方法模式,深入解析抽象类的意义、特点,以及接口interface的定义、特性及其与抽象类的区别。从设计模式到JDK8扩展,带你全面掌握这些关键概念在实际编程中的应用。
摘要由CSDN通过智能技术生成

final关键字

1、被final修饰的类不能被继承;
2、被final修饰的方法不能被重写;
3、被final修饰的变量是常量,值不能被修改(一般会被定义为类成员);

抽象类

概念

抽象方法:不具体的方法(只有方法声明部分,没有方法体的方法,使用abstract关键字修饰)

public void test(){//具体方法,可直接调用
	方法体;
}

public abstract void test();//抽象方法,不能调用

抽象类:不具体的类(类中有了抽象方法,导致类也就不具体的,就是抽象类,使用abstract修饰)

public class Demo{//具体的类
	内容;
}

public abstract class Demo{//抽象类(因为其中有抽象方法不能执行,所以不能创建对象)
	内容;
}

抽象类存在的意义

    要求在父类的所有子类中都要去重写继承自父类的show()方法,所有在父类中定义的show()方法并指定方法体内容就毫无意义,将父类中的show()方法定义为抽象方法,只声明方法的部分,没有方法体,然后让父类中的所有子类去重写继承父类中的抽象方法(如果没有重写抽象方法,则该子类为抽象类)

抽象类的特点

1、抽象类中有抽象方法(抽象类中的抽象方法可有可无,因为抽象方法没有方法体不能被调用,所以不能创建对象),非抽象类中只有具体方法;

2、抽象类创建不了对象,但是可以定义静态成员,通过抽象类类名去访问;

3、抽象类只能作为父类,被子类继承使用;

4、抽象类和非抽象类都能作为父类,仅仅是抽象类中比非抽象类中多了抽象方法;

5、子类继承抽象对象,就必须对抽象方法全部重写,否则在子类中仍是抽象方法,子类也是抽象类;

模板方法设计模式

    抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展,改造,但子类总体上会保留抽象类的行为方式。

解决问题
    当功能内部一部分实现是确定的,一部分实现是不确定的,这是可以把不确定的部分暴露出来,让子类实现

接口interface

介绍

  1、接口其实是一个特殊的抽象类,接口中的成员只有全局变量和抽象方法。
    public static final 数据类型 常量名 = 值;
    public abstract 返回值类型 方法名(参数列表);
    但是因为接口中的成员只有全局变量和抽象方法,所以在接口中定义变量的形式默认也是在定义全局变量,定义不带修饰符abstract和方法体的方法默认也是抽象方法。
  public 数据类型 变量名 = 值;
  public 返回值类型 方法名(参数列表);

2、接口的定义不再使用关键字class,而是使用关键字interface;

3、类的继承使用关键字extends,而接口的继承不叫继承叫实现,使用关键字implements,同时实现接口的类叫实现类;

接口的特点

特点
  1、接口的实现类必须重写接口中的所有抽象方法,否则其实现类是个抽象类;
  2、接口不能创建对象;
  3、接口中的成员只有全局常量和抽象方法;
  4、接口和接口是可以继承的,而且是多继承。
与抽象类的区别
  1、抽象类中可以有抽象方法,也可以有具体方法,而接口中只有抽象方法;
  2、抽象类除了比非抽象类多抽象方法以外,其他内容都有;而接口中只有全局常量和抽象方法;
  3、抽象类是必须被子类继承的,是单继承;接口可以多实现

jdk8对接口的扩展

  在jdk7及以前接口中只能定义全局常量和抽象方法,而在jdk8接口中添加了静态方法和默认方法。
    静态方法不能被实现类对象和实现类调用,只能通过接口调用;
    默认方法使用default关键字修饰,不能被接口和实现类调用,只能使用实现类对象调用;

默认方法的使用说明:
  1)接口中的默认方法可以被实现类重写;
  2)若接口中定义了一个默认方法,而另一个接口中也定义了一个同名参数的默认方法,在实现类中同时实现这两个接口时会出现接口冲突。解决办法:实现类必须重写接口中同名同参数的默认方法;
  3)若一个接口中定义了一个默认方法,而父类中也定义了一个同名同参数的非抽象方法时,不会发生冲突。因为此时遵守:类优先原则;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值