首页 文章 精选 留言 我的

精选列表

搜索[Java],共10000篇文章
优秀的个人博客,低调大师

Java中方法重写的应用

方法重写的应用 当子类需要父类的功能,而功能的主体子类还有自己特有的内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类自己特有的内容。 1 /* 2 方法重写:子类中出现了和父类中方法声明一模一样的方法(方法名、参数列表和返回值类型都一样),也被称为方法覆盖、方法复写。 3 4 方法重载:本类中出现的方法名一样,参数列表不同,与返回值无关的方法。 5 6 子类的成员方法名称和父类中的成员方法名称一样时,这个怎么访问呢? 7 通过子类对象访问一个成员方法的查找顺序: 8 1.在子类的成员方法中找,有就使用。 9 2.在父类的成员方法中找,有就使用。 10 3.都找不到,就报错。 11 12 方法重写的应用: 13 当子类需要父类的功能,而功能的主体子类还有自己特有的内容时,可以重写父类中的方法, 14 这样,即沿袭了父类的功能,又定义了子类自己特有的内容。 15 16 案例: 17 A:定义一个手机类。 18 B:通过研究,我发明了一个新手机,这个手机的作用是在打完电话后,可以听天气预报。 19 按照我们基本的设计,我们把代码给写出来了。 20 但是呢?我们又发现新手机应该是手机,所以,它应该继承自手机。 21 其实这个时候的设计,并不是最好的。 22 因为手机打电话功能,是手机本身就具备的最基本的功能。 23 所以,我的新手机是不用在提供这个功能的。子类注释掉打电话的功能, 24 但是,这个时候,打电话功能就没有了。这个不好。 25 最终,还是要加上这个功能。 26 由于它继承了手机类,所以,我们就直接使用父类的功能即可。 27 那么,如何使用父类的功能呢?通过super关键字调用即可。 28 */ 29 30 class Phone { 31 public void call(String name) { 32 System.out.println("给"+name+"打电话"); 33 } 34 } 35 36 class NewPhone extends Phone { 37 public void call(String name) { 38 //System.out.println("给"+name+"打电话"); 39 super.call(name);//继承父类的功能 40 System.out.println("可以听天气预报了");//子类自己特有的功能。 41 } 42 } 43 44 class ExtendsDemo9 { 45 public static void main(String[] args) { 46 NewPhone np = new NewPhone(); 47 np.call("林青霞"); 48 } 49 } 我的GitHub地址: https://github.com/heizemingjun 我的博客园地址: http://www.cnblogs.com/chenmingjun 我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun Copyright ©2018 黑泽明军 【转载文章务必保留出处和署名,谢谢!】

优秀的个人博客,低调大师

JAVA线程sleep与wait区别

sleep就是正在执行的线程主动让出cpu,cpu去执行其他线程,在sleep指定的时间过后,cpu才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep方法并不会释放锁,即使当前线程使用sleep方法让出了cpu,但其他被同步锁挡住了的线程也无法得到执行。 wait是指在一个已经进入了同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁的线程可以得到同步锁并运行,只有其他线程调用了notify方法(notify并不释放锁,只是告诉调用过wait方法的线程可以去参与获得锁的竞争了,但不是马上得到锁,因为锁还在别人手里,别人还没释放。如果notify方法后面的代码还有很多,需要这些代码执行完后才会释放锁,可以在notfiy方法后增加一个等待和一些代码,看看效果),调用wait方法的线程就会解除wait状态和程序可以再次得到锁后继续向下运行。 测试代码: public class MyThread1 implements Runnable { /* * 由于这里的MyThread1和下面的MyThread2内部run方法要用同一对象作为监视器,我们这里不能用this,因为在MyThread2里面的this和这个MyThread1的this不是同一个对象。 * 我们用MultiThread.class这个字节码对象,当前虚拟机里引用这个变量时,指向的都是同一个对象。 */ public void run() { synchronized (MutiThread.class) { System.out.println("进入MyThread1..."); System.out.println("MyThread1 is waiting..."); try { // 释放锁有两种方式,第一种方式是程序自然离开监视器的范围,也就是离开了synchronized关键字管辖的代码范围,另一种方式就是在synchronized关键 // 字管辖的代码内部调用监视器对象的wait方法。这里,使用wait方法释放锁。 MutiThread.class.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("结束MyThread1..."); } } } public class MyThread2 implements Runnable { public void run() { synchronized (MutiThread.class) { System.out.println("进入MyThread2..."); System.out.println("MyThread2 通知别的线程可以释放wait状态"); // 由于notify方法并不释放锁,即使MyThread2调用下面的sleep方法休息了10毫秒, //但MyThread1仍然不会执行,因为MyThread2没有释放锁,所以MyThread1无法得不到锁。 MutiThread.class.notify(); System.out.println("MyThread2 睡眠10秒"); try { for(int i=1;i<=10;i++){ System.out.println("睡觉"+i+"秒"); Thread.sleep(1000); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("结束MyThread2"); } } } public class MutiThread { public static void main(String[] args) { new Thread(new MyThread1()).start(); new Thread(new MyThread2()).start(); } } 运行结果: 进入MyThread1...MyThread1 is waiting...进入MyThread2...MyThread2 通知别的线程可以释放wait状态MyThread2 睡眠10秒睡觉1秒睡觉2秒睡觉3秒睡觉4秒睡觉5秒睡觉6秒睡觉7秒睡觉8秒睡觉9秒睡觉10秒结束MyThread2结束MyThread1...

优秀的个人博客,低调大师

Java判断字符是否是中文

终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ /** * 判断是否为中文字符 * @param c * @return */ public boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c); if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) { return true; } return false; }

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册