JAVA基础整合——接口

本文详细介绍了Java中的static关键字,包括其修饰属性、方法和代码块的作用,强调了静态成员与非静态成员的区别。接着讨论了final关键字,用于定义不可变的类、变量和方法。最后,探讨了接口的概念,强调接口作为抽象行为的规范,以及接口在多态和常量管理中的应用。此外,还提到了接口与抽象类的区别及其在实际开发中的作用。
摘要由CSDN通过智能技术生成

接口

在进入接口学习提几个重要的关键字。

一.static

  1. static修饰类中的属性(成员变量)
    static是一个修饰符,可以修饰类中的属性、方法、类中的代码块。
    1.1 static修饰的属性在内存中只存在一份,可以理解为共享。静态的成员可以通过对象去去访问,也可以用类名.静态成员去访问。如果让代码写的规范,我们对静态成员的调用都采用类名.静态成员去访问。
    注意:静态成员和非静态成员的区别,静态成员一般都是在类加载的过程中分配内存空间,而非静态成员都是在有了对象之后我们才可以用对象去访问。这里切记类加载的过程都是在创建对象之前就已经发生了,不管创建多少个对象,类加载只需要做一次。
    1.2 在上述可以看到我一直在说类加载,这个概念我在这里总结一下,我们知道我们写的源程序一般都保存在一个.java文件上面,我们在运行程序的时候是需要将我们的程序进行编译成.class文件然后通过一个类加载器加载到JVM内存中,并为这个类分配空间。这里附一个图片加深一下理解:
    在这里插入图片描述

  2. static用来修饰类中的方法成员
    这里可以类比static修饰成员变量,非静态的方法必须创建对象然后才能调用,静态方法可以通过类名.方法名()。因为静态的方法可以在所有的对象创建之前去调用的,但是静态方法中可以访问静态的成员,在非静态的方法中可以访问静态的成员。这里切记不能弄反了,静态的方法中是不能去访问非静态的成员,因为这里静态方法是在创建对象之前就加载出来,如果去调用非静态方法的话就会出现错误,说的通俗一点就是出生了的小孩去找未出生的小孩耍。这种是严重的逻辑错误。
    扩展一下:如果一个类中没有属性的定义,此时创建多个该类的对象没有太大的意义,所有这里我们可以将类中的方法设计为static类型,无需创建对象去调用,直接用类名去打点调就可以了。我们把这些类称为一个”工具类“

  3. static用来修饰代码块

    普通代码块写在{
    JAVA语句;
    }

    这种写法很少,提一下即可。

    如果我们使用static进行修饰代码块,这种叫”静态代码块“,在静态代码块中不能访问属于对象的成员,因为它是在类加载的过程中就自动执行这一块内容。静态代码块可以访问静态的成员变量,这里类比静态方法的访问。(已经出生的小孩找还未出生的小孩耍)
    静态代码块有什么用呢???
    答:可以帮助我们进行一些初始化的准备工作,例如读取一些配置信息。

二.final

它表示最终的,可以修饰类、类中的成员变量、类中的方法、方法中的局部变量。

  1. 被final修饰的类是不能被继承,常见的有String类
  2. final可以修饰一个成员变量,赋值后不能被改变
  3. final可以修饰方法成员,如果父类中有一个方法被final定义后,子类是不能对它进行覆盖的。
  4. final还可以修饰方法中的局部变量,被final修饰的局部变量在方法中是不能对他做值的修改操做的。
    切记:如果final修饰的是一个引用类型的变量。也就是存放在栈中这个地址不能被改变,但是在存放在堆中的值可以被改变。所以如果堆中的值改变后,虽然引用类型的指向地址没有改变,但是值发生了变化。

三.接口

接口的定义:比抽象还抽象的一种行为。

  1. 接口中只能做方法的规范,因此在接口中方法定义时需要加上public abstract。但是我们在接口中可以省略;
  2. 如果有一个类去implements接口,这个类我们叫做实现类,但是在我心里我把实现类当做子类去理解。
  3. 接口也是多态的一种表现形式,多态分为两种:继承多态与接口多态
  4. 接口和继承不一样,继承只能单继承,但是接口可以多实现。多实现是针对某种需求的,如一个人的身份可能有多种,他的行为就可能出现多种。
  5. 把一个类定义为一个父类给子类去继承,父类的行为和属性一定是抽象了它所有子类的共性。如果不能同时找到某些类的共同父类的话,可以进行行为的抽象,这种抽象我们可以做成一个接口。
  6. 接口中我们不能定义常规属性,接口中定义的属性都是常量的,一般用public static final修饰

补充一下接口的作用:

  • 如果在开发中有很多的常量信息,我们可以把这些常量统一定义在一个相同的位置,方便管理。这个位置就是——接口,用接口去定义常量我们称为”常量接口“,因为在接口中的属性默认为final类型。常量接口定义的规范例子:
public interface Constants {
	
	public static final  String SYS_CONFIG1="aaa";
	public static final  String SYS_CONFIG2="bbb";

}

切记:
接口中是不能定义构造方法的,也不能直接创建对象。这里我把抽象类拿出来做一个总结

  1. 抽象类和接口一样不能直接去创建对象,但是抽象类中可以有构造方法,而接口没有。虽然不能直接去创建对象,但是我们一般会去new子类对象(或者实现类)去创建对象。
  2. 抽象类中可以定义成员变量,而接口中的成员变量都是final类型的。
  3. 抽象类中可以定义抽象方法和普通方法,抽象方法去约束子类必须实现这个方法,普通方法可以选择。在接口中的方法只能是抽象方法,但是呢,注意啊但是啊,在JAVA高版本加入了新特性我们可以定义默认的方法,使用default关键字去声明,这样我们就不会强制对实现类实现接口中的方法了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值