推崇接口继承(implements关系) 尽量避免使用实现继承(extends 关系)。
高内聚 低耦合
在一个用extends的继承实现系统中,派生类是非常紧密的和基类耦合,要知道这种紧密的连接是不期望的。
接口实现的功能和抽象类的唯一区别就是解决了java中没有多继承的问题。其他功能完全可以由抽象类替代。
接口的一个重要做用就是实现了面象对象 最重要的特性多态,另外一个作用就是规范而且统一了方法的名称。
多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用CPU而只和I/O,OEMBIOS等资源打交道时,让需要占用CPU资源的其它线程有机会获得CPU资源。每个程序执行时都会产生一个进程,而每一个进程至少要有一个主线程。这个线程其实是进程执行的一条线索,除了主线程外你还可以给进程增加其它的线程,也即增加其它的执行线索,由此在某种程度上可以看成是给一个应用程序增加了多任务功能。当程序运行后,您可以根据各种条件挂起或运行这些线程,尤其在多CPU的环境中,这些线程是并发运行的。多线程就是在一个进程内有多个线程。从而使一个应用程序有了多任务的功能。多进程技术也可以实现这一点,但是创建进程的高消耗(每个进程都有独立的数据和代码空间),进程之间通信的不方便(消息机制),进程切换的时间太长,这些导致了多线程的提出,对于单CPU来说(没有开启超线程),在同一时间只能执行一个线程,所以如果想实现多任务,那么就只能每个进程或线程获得一个时间片,在某个时间片内,只能一个线程执行,然后按照某种策略换其他线程执行。由于时间片很短,这样给用户的感觉是同时有好多线程在执行。但是线程切换是有代价的,因此如果采用多进程,那么就需要将线程所隶属的该进程所需要的内存进行切换,这时间代价是很多的。而线程切换代价就很少,线程是可以共享内存的。所以采用多线程在切换上花费的比多进程少得多。但是,线程切换还是需要时间消耗的,所以采用一个拥有两个线程的进程执行所需要的时间比一个线程的进程执行两次所需要的时间要多一些。即采用多线程不会提高程序的执行速度,反而会降低速度,但是对于用户来说,可以减少用户的响应时间。上述结果只是针对单CPU,如果对于多CPU或者CPU采用超线程技术的话,采用多线程技术还是会提高程序的执行速度的。因为单线程只会映射到一个CPU上,而多线程会映射到多个CPU上,超线程技术本质是多线程硬件化,所以也会加快程序的执行速度。
分享到:
相关推荐
Java 中 extends 与 implements 的区别 Java 中的继承和实现接口是两个基本概念,extends 和 implements 是两个关键字,它们之间的区别是 Java 编程语言中最重要的基础知识。 extends 的作用 在 Java 中,extends...
public class findmin extends Applet implements ActionListener JavaAppliet程序,在文本框里输入三个数,显示最小数
Java extends 与 implements 的区别 在 Java 中,extends 和 implements 是两个关键字,都是用来建立类与类或类与接口之间的关系的,但它们的使用场景和实现机制却有着很大的不同。 extends extends 关键字用于...
ate final String[] COMMAND={"Backspace","CE","C"}; private final String[] M={" ","MC","MR","MS","M+"}; private JButton keys[]=new JButton[KEYS.length]; private JButton commands[]=new JButton[COMMAND....
在JavaScript中,当我们讨论Class属性Extends和Implements的区别时,我们通常是在讨论在某个特定的JavaScript框架或者库中的类的继承方式,比如在Prototype框架或Mootools框架中。 首先,我们来详细探讨一下Extends...
在Java编程语言中,`extends` 和 `implements` 关键字分别用于类的继承和接口的实现,它们是面向对象编程的重要特性。接下来我们将详细探讨这两个关键字的区别和使用场景。 1. **`extends` 关键字**: - `extends`...
public class Calculator extends JFrame implements ActionListener{ JFrame jf; JTextField jtf; JButton jishu = new JButton("="); String sign[] = new String[]{"+","-","*","/","."}; String ops[] = ...
C)class x extends y implements y1 {...} D)class x {...} 4.设 A为已定义的类名,下列声明A类的对象a的语句中正确的是( D)。 A) float A a; B) public A a=A( ); C) A a=new int( ); D) static A a=new A( )...
public class Musicline extends JFrame implements Runnable { private byte[] audioData = null; private int intBytes = 0; private byte[] ml = new byte[1]; private int[] drawl = null; /** ...
implements是用于检查Object符合给定接口的实用程序模块。 例子 var impl = require ( 'implements' ) ; var instance = [ ] ; impl ( instance , [ 'some' , 'every' ] ) ; // true 安装 节点 要在Node应用程序中...
在Java编程语言中,"implements"和"extends"是两个非常关键的关键词,它们用于类的继承和接口的实现,是面向对象编程的核心概念。理解并熟练运用这两个关键字对于掌握Java编程至关重要。 首先,让我们来看"extends...
import java.io.*; public class FirstPart{ public static void main(String[] args) throws Exception{ System.out.print("The input Fahrenheit is "); BufferedReader br = new BufferedReader(new ...
一个类可以实现(`implements`)多个接口。 7. **继承与访问权限** - 子类可以访问父类的非私有成员,但不能访问父类的私有成员,体现了封装特性。 - 父类的静态成员在子类中是静态继承,而实例成员是动态继承,...
添加组件后,在组件上添加图片 1.设置Table的Model这个需要重写AbstractTableModel类, ...设置Table的DefaultEditor,这个需要extends AbstractCellEditor implements TableCellEditor,ActionListener
"JAVA中implement和extends的区别" JAVA中implement和extends是两个非常重要的关键字,它们都是用来实现继承和接口...在项目开发中,需要根据实际情况选择使用implements还是extends,以提高开发效率和降低开发成本。
} } class AssistantProfessor extends Person implements PersonPay{ public AssistantProfessor(String name,double classsum){ super(name,classsum); } public double pay(){ return 1200+classsum*40; } ...
public class PKCard extends JLabel implements MouseListener, MouseMotionListener{ //纸牌的位置 Point point = null; Point initPoint = null; int value = 0; int type = 0; String name = null; ...