Java 拾遗三

1. Override 和 Overload 的含义去区别

  • Override(重写)

重写(Overriding)是父类与子类之间多态性的一种表现。
覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
覆盖的方法的返回值必须和被覆盖的方法的返回一致;
覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
方法被定义为final不能被重写。
对于继承来说,如果某一方法在父类中是访问权限是private,那么就不能在子类对其进行重写覆盖,如果定义的话,也只是定义了一个新方法,而不会达到重写覆盖的效果。

  • Overload(重载)

重载(Overloading)是一个类中多态性的一种表现。
在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样,例如可以是fun(int, float), 但是不能为fun(int, int));
不能通过访问权限、返回类型、抛出的异常进行重载;
方法的异常类型和数目不会对重载造成影响;
重载事件通常发生在同一个类中,不同方法之间的现象。
存在于同一类中,但是只有虚方法和抽象方法才能被覆写。

2. Interface 与 abstract 类的区别

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final。

下面比较一下两者的语法区别:
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4.抽象类中的抽象方法的访问类型可以是public,protected,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5.抽象类中可以包含静态方法,接口中不能包含静态方法
6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7.一个类可以实现多个接口,但只能继承一个抽象类。

3. static class 与 non static class 的区别

static class non static class
内部静态类不需要有指向外部类的引用 非静态内部类需要持有对外部类的引用
静态类只能访问外部类的静态成员,不能访问外部类的非静态成员 非静态内部类能够访问外部类的静态和非静态成员
- 一个非静态内部类不能脱离外部类实体被创建
- 一个非静态内部类可以访问外部类的数据和方法

4. Java 多态的实现原理

子类Child继承父类Father,我们可以编写一个指向子类的父类类型引用,该引用既可以处理父类Father对象,也可以处理子类Child对象。
当相同的消息发送给子类或者父类对象时,该对象就会根据自己所属的引用而执行不同的行为,这就是多态。
即多态性就是相同的消息使得不同的类做出不同的响应。

5. 实现多线程的两种方法:Thread 与 Runable

  • 继承 Thread 类

1.定义类继承Thread;
2.覆写Threa类的run方法。 自定义代码放在run方法中,让线程运行;
3.调用线程的star方法。

  • 实现 Runable 接口

1.定义类实现 Runnable 接口;
2.覆盖 Runnable 接口中的 run 方法,运行的代码放入run方法中;
3.通过 Thread 类建立线程对象;
4.将 Runnable 接口的子类对象作为实际参数传递给 Thread 类的构造函数;
因为,自定义的 run 方法所属的对象是 Runnable 接口的子类对象。所以要让线程去执行指定对象的 run 方法。就必须明确该 run 方法所属对象;
5.调用 Thread 类的 start 方法开启线程并调用 Runnable 接口子类的 run 方法。

6. 线程同步的方法:sychronized、lock、reentrantLock 等

  • sychronized

Java 中最基本同步互斥的手段,可以修饰代码块、方法、类;
在修饰代码块的时候需要一个 reference 对象作为锁的对象;
在修饰方法的时候默认是当前对象作为锁的对象;
在修饰类时候默认是当前类的 Class 对象作为锁的对象。

synchronized 会在进入同步块的前后分别形成 monitorenter 和 monitorexit 字节码指令;
在执行 monitorenter 指令时会尝试获取对象的锁,如果此对象没有被锁或者已经被当前线程锁住,那么锁的计数器加一;
每当 monitorexit 被锁的对象的计数器减一,直到为 0 就释放该对象的锁。
由此 synchronized 是可重入的,不会出现自己把自己锁死。

可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响

  • lock

lock 是一个类,通过这个类可以实现同步访问;
必须要用户去手动释放锁,如果没有主动释放锁,就有可能导致出现死锁现象;

  • reentrantLock

对象的方式来操作对象锁.相对于 sychronized 需要在 finally 中去释放锁;
1.等待可中断。在持有锁的线程长时间不释放锁的时候,等待的线程可以选择放弃等待。tryLock(long timeout, TimeUnit unit);
2.公平锁。按照申请锁的顺序来一次获得锁称为公平锁。synchronized 的是非公平锁,ReentrantLock 可以通过构造函数实现公平锁。new RenentrantLock(boolean fair);
3.绑定多个 Condition。通过多次 new Condition 可以获得多个 Condition 对象,可以简单的实现比较复杂的线程同步的功能。通过 await()、signal()。

7. 锁的等级:方法锁、对象锁、类锁

在修饰代码块的时候需要一个 reference 对象作为锁的对象;
在修饰方法的时候默认是当前对象作为锁的对象;
在修饰类时候默认是当前类的 Class 对象作为锁的对象。

8. 写出生产者消费者模式

准确说应该是“生产者-消费者-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了。
对于此模型,应该明确一下几点:
1.生产者仅仅在仓储未满时候生产,仓满则停止生产;
2.消费者仅仅在仓储有产品时候才能消费,仓空则等待;
3.当消费者发现仓储没产品可消费时候会通知生产者生产;
4.生产者在生产出可消费产品时候,应该通知等待的消费者去消费。
https://www.cnblogs.com/linjiqin/p/3217050.html
https://www.cnblogs.com/chentingk/p/6497107.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容