看代码看到 public Runnable r = new Runnable() { @Override public void run() { ... } } 接口不能new ,不过可以生成一个匿名类,省略了写一个具体类实现接口的开销. public class Main { public static void main(String[] args) { String a=new CustomerImpl().sayHello("hongda"); System.out.print
java的接口为什么不能实例化呢?首先,我们需要明白实例化的含义.实例化实际意义是在jvm的堆中开辟出一块内存空间,比如Student s = new Student();此处声明Student对象s,并且实例化一个Student对象,实则是在堆中开辟出一块空间来存放Student对象,s则是指向这块空间,也就是内存中的一块地址.这块地址中所存放的值就是我们这个Student对象的一些属性. 具体类所占用的内存空间(也就是堆里的一块地址)所存放的值是类的成员变量,这里插入一张图便于我们理解: 图
ava中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过实现Runnable接口,实例化Thread类 在实际应用中,我们经常用到多线程,如车站的售票系统,车站的各个售票口相当于各个线程.当我们做这个系统的时候可能会想到两种方式来实现,继承Thread类或实现Runnable接口,现在看一下这两种方式实现的两种结果. public class TheadDemo extends Thread{ private int