java学习日志(6)回调、模板方法模式、内部类、数组及初始化

来源:互联网 发布:每天编程一小时网站 编辑:程序博客网 时间:2024/06/06 09:01

回调的思想是中间留有一段没有完成的实现,通过子类来确定这段实现的具体内容。

不过还没弄清楚各种定义的关系


代码1:
package cn.bjsxt.oop.callBack;
public abstract class MyFrame {//如果要子类都重写,则这里可以定义为抽象类
public abstract void paint();
}
interface IMyFrame { //也可以用借口来做
void paint();

class GameFrame02 implements IMyFrame{
public void paint(){
System.out.println("GameFrame02.paint()");
System.out.println("画窗口");
}
}

代码2:

package cn.bjsxt.oop.callBack;
//测试回调
public class PaintFrame {
public static void drawFrame(IMyFrame f){
System.out.println("启动线程");
System.out.println("增加循环");
System.out.println("查看消息线");

f.paint();//这里实现待定,由下面的子类决定
//画窗口
System.out.println("启动缓存,增加效率");
}
public static void main(String[] args){
drawFrame(new GameFrame01());//这里传01则调用01,传02则调用02
}
}
class GameFrame01 implements IMyFrame{
public void paint(){
System.out.println("GameFrame01.paint()");
System.out.println("画窗口");
}
}


模板方法模式:完全忘了


内部类:在类的里面定义类

package cn.bjsxt.eleven;
//内部类测试
public class Outer {
public static void main(String[] args){
Face f = new Face();
Face.Nose n = f.new Nose();
n.breath();
Face.Ear e = new Face.Ear();//静态内部类
e.listen();
}
}
class Face{
int type;
static String color = "红润";
class Nose{
String type;//如果这一行没有,则下面type调用的就是外部类的
void breath(){//普通内部类可以看作外部普通的属性一样,必须现有外部类对象,才能有内部类对象
System.out.println(type);//this.type,Face.this.type不一样,后者调用外部类属性
System.out.println("呼吸");
}
}
static class Ear{//静态内部类,外部类对象不一定有,所以静态内部类不能调用外部的属性
void listen(){
System.out.println("q");//静态的不能调外部非静态的,比如不能调 type
System.out.println(color);//可以访问静态的
System.out.println("listening");
}
}
}


数组:

/*
 * 1.数组是相同数据类型的有序集合
 * 2.数组也是对象,数组元素相当于对象的成员变量

 * 3.数组的长度是确定的,不可变。如果越界,则报ArrayIndexOutofBoundsException*/

数组的初始化有三种方法:默认初始化、动态初始化、静态初始化

但是这里值传递仍然没有完全明白?

0 0
原创粉丝点击