JAVA进阶18
间歇性混吃等死,持续性踌躇满志系列-------------第18天
1、飞机游戏小项目
①创建窗口
package cn.xfj.game; import javax.swing.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; //飞机游戏的主窗口
public class MyGameFrame extends JFrame {
//初始化窗口
public void launchFrame() {
this.setTitle("My first game");
this.setVisible(true);
this.setSize(500,500);
this.setLocation(200,200); this.addWindowListener(new WindowAdapter(){
public void windowCloing(WindowEvent e){
System.exit(0);
}
});
} public static void main(String[] args) {
MyGameFrame f = new MyGameFrame();
f.launchFrame();
}
}
运行结果图
② 图形和文本绘制
super.paint(g); // 调用父类的paint方法或调用下面的方法直接绘制组件
注:这个位置不加super调用会出现窗体显示不正常。
2、抽象方法和抽象方法
抽象方法:使用abstract修饰的方法,没有方法体,只有声明。定义的是一种“规范”,就是告诉子类必须要给抽象方法提供具体的实现。
抽象类:包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们可以做到严格限制子类的设计,使子类之间更加通用。
package cn.zh.abstrac; //抽象类
abstract class Animal{
//抽象方法
abstract public void shout();
}
class Dog extends Animal{
//子类必须实现父类的抽象方法,否则编译错误
public void shout(){
System.out.println("www...");
}
public void seeDoor(){
System.out.println("seedoor...");
}
}
//测试抽象类
public class TestAbstractClasss {
public static void main(String[] args) {
Dog g = new Dog();
g.shout();
g.seeDoor();
}
}
抽象类
运行结果图
抽象类的使用要点:①有抽象方法的类智能定义成抽象类②抽象类不能被实例化,即不能用new来实例化抽象类。③抽象类可以包含属性、方法、构造方法。但是只能用来被子类调用④抽象类智能用来被继承⑤抽象方法必须被子类实现。
JAVA进阶18的更多相关文章
- Java进阶(三)多线程开发关键技术
原创文章,同步发自作者个人博客,转载请务必以超链接形式在文章开头处注明出处http://www.jasongj.com/java/multi_thread/. sleep和wait到底什么区别 其实这 ...
- Java进阶(三十二) HttpClient使用详解
Java进阶(三十二) HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们 ...
- Java进阶(五十三)屡试不爽之正则表达式
Java进阶(五十三)屡试不爽之正则表达式 在线测试网址: http://tool.oschina.net/regex/# 上面的在线测试网址,含有正则表达式的生成,非常实用.大家共勉之! 匹配中文: ...
- java进阶视频分享
更多资源和教程请关注公众号:非科班的科班. 如果觉得我写的还可以请给个赞,谢谢大家,你的鼓励是我创作的动力 课程目录介绍 01.开班仪式02.并发编程专题之多线程基础03.并发编程专题之Java内存模 ...
- Java 进阶 hello world! - 中级程序员之路
Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...
- [.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(三) 利用多线程提高程序性能(下)
[.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(二) 利用多线程提高程序性能(下) 本节导读: 上节说了线程同步中使用线程锁和线程通知的方式来处理资源共享问题,这 ...
- Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式
原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...
- Java线程间通信方式剖析——Java进阶(四)
原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...
- 当我们说线程安全时,到底在说什么——Java进阶系列(二)
原创文章,同步发自作者个人博客,转载请以超链接形式在文章开头处注明出处http://www.jasongj.com/java/thread_safe/ 多线程编程中的三个核心概念 原子性 这一点,跟数 ...
随机推荐
- Redis报错 Server started, Redis version 3.2.13 Can't handle RDB format version 9 Fatal error loading the DB: Invalid argument. Exiting.
在/usr/local/etc 目录下 运行 redis-server 命令重启 redis 服务发现报错,报错信息如下: 如上报错的含义是:当前的redis的版本是3.2.13版本,无法处理 ver ...
- 《你必须掌握的Entity Framework 6.x与Core 2.0》正式出版感想
前言 借书正式出版之际,完整回顾下从写博客到写书整个历程,也算是对自己近三年在技术上的一个总结,整个历程可通过三个万万没想到来概括,请耐心阅读. 写博.写书完整历程回顾 从2013年12月注册博客园账 ...
- vmware workstation安装教程以及其中出现的错误解决方法
VMware Workstation 安装教程 1 下载好虚拟机,然后运行,点击下一步 2 选择我接受,下一步 3 选择安装的位置,可以自己选择,也可以默认不更改,这个无影响(图中I:\下面的VM ...
- 类Scanner
什么是Scanner类 一个可以解析基本类型和字符串的简单文本扫描器. 引用类型使用步骤 1:导包:使用import关键字导包,在类的所有代码之前导包,引入要使用的类型. java.lang包下的所有 ...
- [百度百科]dir命令指定显示的排序方式
https://jingyan.baidu.com/article/7c6fb428dcf39880642c9095.html 今天工作中遇到了这个需求 感觉很好用 dir /o:d >name ...
- DAY29、元类
一.eval内置函数eval内置函数的使用场景: 1.执行字符串会得到相应的执行结果 2.一般用于类型转换,得到dict.list.tuple例: dic_str = ''{'a':1,'b':2}' ...
- SPFA求最短路——Bellman-Ford算法的优化
SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环.SPFA 最坏情况下复杂度和朴素 Bellman-Ford 相同,为 O(VE), ...
- Educational Codeforces Round 63 (Rated for Div. 2) C. Alarm Clocks Everywhere gcd
题意:给出一个递增的时间序列a 给出另外一个序列b (都是整数) 以b中任选一个数字作为间隔 自己从1开始任选一个时间当成开始时间 输出选择的数字标号以及 开始时间 思路 直接求间隔的公共gc ...
- Vscode生成verilog例化
前言 手动例化又慢又容易出错,孩子老犯错怎么办? 当然是脚本一劳永逸. 流程 (1)在vscode中安装如下插件. (2)在电脑中安装python3以上的环境. 下载地址:https://www.py ...
- 【CERC2016】【BZOJ4792】村庄 搜索
题目大意 有一个 \(2^n\times 2^n\) 的网格,左下角坐标为 \((0,0)\),右上角坐标为 \((2^n,2^n)\). 定义格点 \((x,y)\) 为坐标系中坐标为 \((x,y ...