接口那点事

本文探讨了Java接口的使用,包括接口的特性:方法必须是public abstract,不能包含实现,可以声明public static final变量,包含静态方法,以及JDK 1.8引入的默认方法。示例代码展示了如何创建实现接口的类并调用接口方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我记得面试的时候有个人问我接口是不是可以new来实例化。我没答上来,但是他告诉我说,我们创建对象都是要通过构造函数来进行new出来这个对象。
但是我想了下,我虽然没有构造函数,但是我可以直接new这个接口,然后实现里面全部的方法不是也可以创建这个对象吗。其实我个人认为,只是回答的角度不同罢了。怎么说应该都说的通。
接下来,我们看看接口的这些事
一、接口的方法声明必须是 public abstract, 即便不写默认也是

public interface TestA {
    /**
     * 接口的方法声明必须是 public abstract, 即便不写默认也是
     */
    public abstract void test1();

    void test2();
    }

二、接口中不能包括具体的方法实现

public interface TestA {
    /**
     * 接口里面不能包含方法具体实现
     * 提示:Delete method body
     */
//    void test3(){}
}

三、可以声明 public static final 修饰的变量

public interface TestA {
 public static final String a = "我是变量";
    int b = 1;
   }

四、接口中可以有静态方法

public interface TestA {
 static void staticMethod(){
        System.out.println("我是静态方法");
    }
 }

五、jdk1.8中增加了这个是默认方法

public interface TestA {
	 /**
     * 这个是默认方法
     *
     */
    default String get(String aa){
        System.out.println("我是参数aa  = " + aa);
       return a;
    }
}

测试


/**
 * 方法调用
 */
class TestD{
    public static void main(String[] args) {
        /**
         * 接口不能实例化,但是.....但是可以被实现类创建
         */
        TestA testA = new TestB();
        /**
         * jdk 1.8后增加的 默认方法
         */
        String hello_world = testA.get("Hello World");
        System.out.println("hello_world = " + hello_world);
        System.out.println("-----------华丽分割线----------");
        /**
         * 我就想问问这么咋就创建不出来对象了呢,虽然平时不这么干,但是能实现创建对象啊。咱们单说创建对象这个事哈。
         */
        TestA tA = new TestA() {
            @Override
            public void test1() {
                
            }

            @Override
            public void test2() {

            }
        };
    }
}

### 如何在 Linux 系统中配置和更改 IP 地址 #### 使用 `vim` 编辑网卡配置文件 对于希望采用静态IP地址的情况,可以通过编辑网卡配置文件实现。具体操作如下: 打开终端并使用文本编辑器如 `vim` 来修改 `/etc/sysconfig/network-scripts/` 下对应接口名称的配置文件(例如 `ifcfg-ens33`),其中 ens33 是网络接口的名字,在不同环境中可能会有所不同。 ```bash sudo vim /etc/sysconfig/network-scripts/ifcfg-ens33 ``` 在该文件内调整或添加以下参数以设定静态IP地址[^1]: - `BOOTPROTO=static`: 启用静态IP分配模式; - `ONBOOT=yes`: 开机时自动激活此网络连接; - `IPADDR=<Your_IP_Address>`: 设定所需的IPv4地址; - `NETMASK=<Subnet_Mask>`: 设置子网掩码; - `GATEWAY=<Gateway_IP>`: 配置默认网关; 完成上述设置之后保存退出,并执行命令重启网络服务使改动生效: ```bash sudo systemctl restart network ``` 或者针对特定版本可能需要使用不同的指令来重启网络管器,比如对于NetworkManager控制的服务可以尝试下面这条语句: ```bash sudo nmcli connection reload ``` #### 利用 `nmcli` 命令行工具快速变更 另一种更为简便的方式是利用 NetworkManager 提供的命令行界面——`nmcli` 工具来进行即时性的IP地址更动而无需手动编辑任何配置文档。这种方式特别适合临时测试或是动态环境下的应用需求。 要查看当前活动的网络连接列表及其状态可运行: ```bash nmcli con show ``` 为了给指定设备指派新的固定IP地址,则可以根据实际情况构造相应的命令字符串。假设目标是以太网适配器名为 "eth0", 并打算将其设为具有特定IP地址、子网掩码以及网关的信息,那么完整的命令可能是这样的形式: ```bash nmcli con mod eth0 ipv4.addresses <New_IP>/24 ipv4.gateway <Gateway> ipv4.dns "<DNS_Servers>" ipv4.method manual ``` 这里 `<New_IP>` 表示新分配给机器的实际IP地址,`<Gateway>` 应替换为目标路由器所在的IP位置,而 `<DNS_Servers>` 可选填入首选域名服务器的位置以便解析外部资源访问求。 最后一步是要让这些改变立即起作用,可通过重新加载连接配置达到目的: ```bash nmcli con up id 'eth0' ``` 注意以上提到的所有路径名、变量值都需要依据实际场景做适当调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值