java继承和接口的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java继承和接口的区别相关的知识,希望对你有一定的参考价值。

继承是一个“动词”,主要用于代码的重用,用继承来实现对代码的重用,如继承线程Thread类,我们不用自己来写个Thread类也能做线程。而接口是一个名词,一个特殊的类,里面只有静态的成员变量或成员方法,多于模块的定义。 参考技术A 最大的区别就是,继承只能继承一个类接口能实现多个接口.就像你说的线程,假如你已经继承了一个类,这时候你就只有实现接口的 参考技术B 1,一个类只能继承一个类,但是可以实现多个接口。
2,依赖倒转原则: 依赖抽象(例如接口),不要依赖于实现。
3,合成/聚合复用原则(CARP): 尽量使用合成/聚合,而不是继承关系达到复用的目的。
4,接口传达的意思是:拥有某种功能,能干嘛,比如:Serializable代表可序列化的。
5,继承传达的是意思是:is-a,比如:猫 是一个 动物,猫就是动物的子类。

java多线程:继承Thread和实现Runable接口的区别

如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。

1.继承Thread——多线程执行各自的资源,线程执行的资源互不干涉,各自执行各自的

package TestThread;
public class TicketsThread {
     public static void main(String[] args) {
         Tickets tickets1 = new Tickets();  
         tickets1.start();
         Tickets tickets2 = new Tickets();  
         tickets2.start();        
}
}
class Tickets extends Thread{
    private int num=10;
    @Override
    public void run() {
       while(num>0){
           sale();
       }

    }
        synchronized void sale() {  
            if(num > 0){    
                System.out.println(Thread.currentThread().getName() + "卖出一张票,还剩余"+ (--num) + "张票。");  
                try{    
                    Thread.sleep(100);    
                }catch(InterruptedException e){    
                    e.printStackTrace();    
                }    
            }    
        }    
}

控制台输出(各自操作各自的10张票,互不干涉):

技术图片

2.实现Runnable接口——多线程共享同一资源:

package TestThread;
public class TicketsThread {
     public static void main(String[] args) {
         Tickets tickets = new Tickets();    
         new Thread(tickets).start();  
         new Thread(tickets).start();  

}
}
class Tickets extends Thread{
    private int num=10;
    @Override
    public void run() {
       while(num>0){
           sale();
       }

    }
        synchronized void sale() {  
            if(num > 0){    
                System.out.println(Thread.currentThread().getName() + "卖出一张票,还剩余"+ (--num) + "张票。");  
                try{    
                    Thread.sleep(100);    
                }catch(InterruptedException e){    
                    e.printStackTrace();    
                }    
            }    
        }    
}

控制台输出(两个线程操作共同的10张票,按照顺序依次递减):

技术图片

转自:https://blog.csdn.net/qq_37791764/article/details/77752363

以上是关于java继承和接口的区别的主要内容,如果未能解决你的问题,请参考以下文章

JAVA里 实现和继承的区别 说白话点 谢谢

Java中继承和实现的区别

java中接口和继承的区别

java中接口和继承的区别

java中继承与实现接口的区别与联系是啥啊?知道的说一下,我这里谢谢了。

java 抽象类和接口的区别