接口能不能new对象?接口中能不能有实现方法?

本文探讨了接口在Java中的特性,指出接口不能通过`new`操作符实例化,这是由于接口没有构造方法。然而,接口可以包含抽象方法、默认方法和静态方法。默认方法提供了具体的实现,可以通过实现类进行重写或调用。接口中的私有方法,包括静态和非静态,用于支持接口功能的实现。总结了接口从JDK 7到JDK 8的演进,强调了接口在多线程等场景中的作用。
摘要由CSDN通过智能技术生成

接口到底能不能new呢?接口中到底能不能有实现方法?

先说结论:接口是不能new的,并且接口中是可以有具体的方法实现的

new 接口

我们在学习多线程的过程中一定会遇到以下的写法

new Thread(new Runnable() {
   
            @Override
            public void run() {
   
                for(int i = 0;i<=40;i++){
   
                    ticket.sell()
Java接口不能有实例变量,只能有常量。因为接口中的变量默认是public static final类型的,也就是常量,它们的值在定义时就已经确定,不能被修改。 但是从Java 8开始,接口中可以定义default方法和static方法。default方法接口中带有方法体的方法,它可以被实现类继承或覆盖。static方法接口中带有static关键字的方法,它可以直接通过接口名来调用,而不需要创建实例对象。 在Java 9中,接口还可以定义私有方法,这些方法只能在接口中被调用,不能实现类或其他类调用。 下面是一个Java 8中带有default方法和static方法接口的例子: ``` public interface Animal { int MAX_AGE = 100; void eat(); default void sleep() { System.out.println("动物睡觉"); } static void run() { System.out.println("动物奔跑"); } } public class Dog implements Animal { public void eat() { System.out.println("狗吃骨头"); } } public class Test { public static void main(String[] args) { System.out.println(Animal.MAX_AGE); // 100 Dog dog = new Dog(); dog.eat(); // 狗吃骨头 dog.sleep(); // 动物睡觉 Animal.run(); // 动物奔跑 } } ``` 在上面的例子中,Animal接口中定义了一个常量MAX_AGE和三个方法eat、sleep和run。eat方法必须被实现实现,sleep方法有默认实现,而run方法是静态方法,可以直接通过接口名来调用。Dog类实现了Animal接口,并实现了eat方法。在测试类Test中,通过Animal接口的常量MAX_AGE来获取狗的最大年龄,通过Dog类的实例对象dog来调用eat和sleep方法,通过Animal接口的静态方法run来调用动物奔跑方法
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值