面向对象
ClearDream__
此人不懒,什么都没写
展开
-
面向对象 多态
一 多态:1)多态的意义: 1.1)同一类型的引用指向不同的对象时,有不同的实现 ------------行为的多态:cut()、run()、step()。。。。 1.2)同一个对象被造型为不同的类型时,有不同的功能 -------------对象的多态:我、你、水。。。。2)向上造型(自动类型转换): 2.1)超类型的引用指向派生类的对象 2.2)能造型成为的类型有:超类+所实现的接口 ...原创 2022-02-18 15:38:19 · 193 阅读 · 0 评论 -
面向对象 接口
一 接口:1)是一种数据类型(引用类型)2)由interface定义3)接口中只能包含常量和抽象方法interface Tnter1{ public static final int NUM = 5; public abstract void show(); int COUNT = 5; //默认public static final void test(); //默认public abstract}4)接口不能被实例化5)接口是需要被实现的/继承,实现类原创 2022-02-17 18:49:13 · 163 阅读 · 0 评论 -
面向对象 删除越界的敌人和子弹
一 删除越界的敌人和子弹:1)将检测敌人越界行为outOfBounds()设计在FlyingObject中, 将Bullet中重写outOfBounds()2)删除越界行为为定时发生的,所以在run()中调用outOfBoundsAction() 在outOfBoundsAction()中: 声明不越界数组,遍历敌人/子弹, 判断若不越界,则将不越界对象添加到不越界数组中, 最后将不越界数组复制到enemies/...原创 2022-02-16 17:20:37 · 182 阅读 · 0 评论 -
面向对象 英雄机随着鼠标移动
一 swing事件触发:1)事件:发生了一件事2)事件处理:发生事之后所做的操作3)侦听器: 3.1)有一个侦听器对象 3.2)安装侦听器到面板去原创 2022-02-16 14:14:37 · 148 阅读 · 0 评论 -
面向对象 飞行物移动
一 飞行物的移动:1)飞行物移动为所有对象所共有的行为,所以在超类中设计抽象方法step() 派生类中重写step()2)飞行物移动为定时发生的,所以在run()中调用stepAction()实现飞行物移动 在stepAction()中: 天空动,遍历敌人敌人动,遍历子弹子弹动二 代码:1)小蜜蜂重写step():2)天空重写step():3)定时与飞行物移动:...原创 2022-02-15 19:43:57 · 147 阅读 · 0 评论 -
面向对象 子弹入场
一 子弹入场:1)子弹是由英雄机发射出来的,所以在Hero中创建shoot()生成子弹对象2)子弹入场为定时发生的,在run()中调用shootAction()实现子弹入场 在shootAction()中: 每300毫秒,获取子弹对象,扩容并数组追加3)数组的追加Bullet[] bs = hero.shoot();bullets = Arrays.copyOf(bullets,bullets.length+bs.length);System.arrayco...原创 2022-02-15 15:00:19 · 177 阅读 · 0 评论 -
面向对象 案例-敌人入场
一 功能实现过程:1)先写行为: 1.1)若为某个对象所特有的行为,就将方法设计在对应的类中 1.2)若为所有对象所共有的行为,就将方法设计在超类中2)页面调用:原创 2022-02-15 13:43:04 · 154 阅读 · 0 评论 -
面向对象 匿名内部类案例-设计定时器
一 功能分析:1)敌人入场:2)子弹入场:3)飞行物移动:二 计时器:1)TimerTask为抽象类:2) TimerTask抽象类中还存在一个抽象方法:需要重写抽象方法3)代码如下://timer.schedule(?,10,10); //(TimeTask,long,long)//第1个10:从程序启动开始到第一次触发的时间间隔//第2个10:从第一次触发到第二次触发的时间间隔// 从第二次触发到第三次触发的时间间隔/...原创 2022-02-14 15:06:57 · 248 阅读 · 0 评论 -
面向对象 匿名内部类
一 匿名内部类:1)若想创建一个类(派生类)的对象,并且对象只创建一个, 此时该类不必命名,称为匿名内部类2)在jdk1.8以前,匿名内部类中若要访问外面的变量, 该变量必须是final的二 问题:1)内部类由独立的.class吗?答:有2)命名:自己起变量名时,一般都是纯字母常量多个单词,用_内部类玩整名称,用$和数字(匿名内部类)...原创 2022-02-14 14:15:53 · 130 阅读 · 0 评论 -
面向对象 成员内部类
一 成员内部类:应用率不高1)类中套类,外面的称之为外部类Outer,里面的称为Inner内部类class Test{ main(){ Aoo o1 = new Aoo(); Boo o2 = new Boo(); //编译错误 }}class Aoo{ //外部类 private int a; class Boo{ //内部类 System.out.println(a); //正确 System.out.println原创 2022-02-14 06:13:46 · 298 阅读 · 0 评论 -
面向对象 画对象
一 画对象:1)想画对象得获取对象的图片,每个对象都能获取图片, 意味着获取图片行为为共有行为,设计为超类FlyingObject中 每个对象获取图片的行为都是不一样的,所以设计为抽象方法 --------在FlyingObject中设计抽象方法getImage()来获取对象的图片2)对象在获取图片时需考虑对象的状态, 因为在不同状态下要获取不同的图片,所以需要给对象设计状态 每个对象都有状态,所以将状态设计在超类中,而状态一般都...原创 2022-02-12 21:28:22 · 208 阅读 · 0 评论 -
面向对象 抽象方法、抽象类
一 设计规则:1)将派生类共有的属性和行为,抽到超类中--------------抽共性2)派生类的行为都一样,设计为普通方法 派生类的行为都不一样,设计为抽象方法3)二 抽象方法:1)由abstract修饰2)只有方法的定义,没有具体的实现(连{}都没有)三 抽象类:1)由abstract修饰2)包含抽象方法的类必须是抽象类 不包含抽象方法的类也可以声明为抽象类----------我乐意3)抽象类不能被实例化(单独存在没有意义)Fl...原创 2022-02-12 18:27:27 · 420 阅读 · 0 评论 -
面向对象 static final常量
一 static final常量:1) 必须声明同时初始化2)类名点来访问、不能被改变3)建议:常量名所有字母都大写,多个单词之前用_分隔4)编译器在编译时将常量直接替换为具体的值,效率高5)何时用:数据永远不变,并且经常使用//主方法中调用: System.out.println(Aoo.PI)//类名点来访问 //Aoo.PI = 3.1415926;//编译错误,常量不能被改变 System.out.println(Boo.num); //..原创 2022-02-12 16:57:09 · 204 阅读 · 0 评论 -
面向对象 给对象添加图片属性
一 Java设计BuffererdImage这个类用来装图片:(缓冲图像)1)每个对象都有图片属性-----设计在超类中-----此处不合适2)因为每个对象的图片不一样------设计在派生类中3)每个对象读取图片的方式是一样的所以可以把方法写在超类中4)文件操作(IO)-------特别容易出现异常 --------强制必须做异常处理...原创 2022-02-11 21:46:28 · 525 阅读 · 0 评论 -
面向对象 static
一 成员变量:1)实例变量:没有static修饰,属于对象的,存储在堆中 有几个对象就有几份 通过对象名点来访问 2)静态变量:有static修饰,属于类的,存储在方法区中 只有一份 通过类名点来访问class Aoo{ int a; static int b...原创 2022-02-10 23:17:55 · 248 阅读 · 0 评论 -
面向对象 final关键字
一 final:final:最终的、不可改变的1)修饰变量:变量不可被改变2)修饰方法:方法不能被改变3)修饰类:类不能被继承4)final修饰成员变量,必须在如下两种方式中初始化: 4.1)声明的同时初始化 4.2)在构造方法中初始化5)final修饰局部变量,用之前初始化即可...原创 2022-02-10 12:01:35 · 63 阅读 · 0 评论 -
面向对象 访问控制修饰符
一 访问控制修饰符:1)public:公开的,任何类2)private:私有的,本类3)protected:受保护的,本类、派生类、同包类4)默认的:什么也不写,本类、同包类二 说明:1)类的访问修饰符只能是public或默认的2)类中成员的访问修饰符如上四种都可以 数据私有行为公开 ...原创 2022-02-09 22:49:41 · 152 阅读 · 0 评论 -
面向对象 package和import
一 package:1) 作用:避免类名的冲突2)包名可以有层次结构,同包中的类不能同名3)类的全称:包名所有字母都小写3)建议: 域名反写.项目名称. 模块名称 . 类名 (域名是全球唯一的) com.taobao.aproject . studentmanager. com.baidu.bproject . teachermanager.二 im...原创 2022-02-09 21:32:15 · 85 阅读 · 0 评论 -
面向对象 重载与重写的区别
一 区别: --------常见面试题1)重写: 1.1)发生在父子类中,方法名称相同,参数列表相同,方法体不同 1.2)遵循“运行期绑定”,看对象的类型来调用方法2)重载: 2.1)发生在一个类中,方法名称相同,参数列表不同,方法体不同 2.2)遵循“编译器绑定”,看参数/引用的类型来绑定方法遵循原则面试时可不答...原创 2022-02-09 17:12:36 · 191 阅读 · 0 评论 -
面向对象 方法的重写
一 方法的重写:(Override)重新写、覆盖1)发生在父子类中,方法名相同,参数列表相同,方法体不同2)重写方法被调用时,看对象的类型3)遵循“两同两小一大”原则:-------了解 3.1)两同: 3.1.1)方法名称相同 3.1.2)参数列表相同 3.2)两小: 3.2.1)派生类方法的返回值类型小于或等于超类方法的 1)void时,必须相等 ...原创 2022-02-09 16:06:33 · 230 阅读 · 0 评论 -
面向对象 向上造型
一 向上造型:原创 2022-02-09 08:22:58 · 138 阅读 · 0 评论 -
面向对象 总结与补充
一 练习:1)原创 2022-02-08 21:09:59 · 77 阅读 · 0 评论 -
面向对象 继承和super
一 继承:extends1)作用:代码复用2)通过extends实现继承3)超类/父类:所有派生类所共有的属性和行为 派生类/子类:派生类所特有的属性的行为4)派生类继承超类后,派生类具有:派生类的+超类的5)一个超类可以有多个派生类 一个派生类只能有一个超类--------单一继承6)继承具有传递性7)java规定:构造派生类之前必须先构造超类 在派生类的构造方法中若没有调用超类的构造方法 ------------则默认s...原创 2022-02-08 18:03:08 · 100 阅读 · 0 评论 -
面向对象 设计引用类型数组
一 飞机大战中重复出现的事物设计成引用类型数组:二 总结:1.等号两边数据类型必须一样2.数组元素有多少就要赋值多少,否则引用类型数组元素默认值为null无法指向方法中的位置原创 2022-02-08 02:22:56 · 60 阅读 · 0 评论 -
面向对象 引用类型数组
一 引用类型数组的存储:1)Student[] stus = new Student[3];stus[0] = new Student("zhangsan",25,"lf");stus[1] = new Student("lisi",26,"jms");stus[2] = new Student("wangwu",28,"sd");System.out.println(stus[0].address);2)Student[] stus = new Student[...原创 2022-02-07 23:50:55 · 81 阅读 · 0 评论 -
面向对象 null和NullPointerException
一 内存管理: 由JVM来管理的1.堆:存储new出来的对象(包含成员变量)2.栈:存储局部变量(包括方法的参数)3.方法区:存储 .class字节码文件(包括方法)main(){Aoo o = new Aoo();o.show(8);}class Aoo(){ int a ; void show(int b){ int c = 5; }}其中a为成员变量存储在堆中;b,c为局部变量存储在栈中堆:Aoo对象+a栈:o+b+c.原创 2022-02-07 14:49:44 · 163 阅读 · 0 评论 -
面向对象 类和对象
一 概念:例子:二 方法的重载:1.概念:2.演示:二 this关键字:原创 2022-02-06 18:56:03 · 68 阅读 · 0 评论