1.多态内存分析:java项目中textopp中cn.yulei.opp.polymorphism
其中的S 是调用子类mysevers中的doget()方法。
多态分析的三条件:继承,重写,父类引用指向子类对象。
2.抽象类抽象方法:通过抽象类可以控制对子类的随意性。通过抽象类我们可以严格限制子类的设计,使子类之间更加通用。
abstract
要点:1.有抽象方法的类只能定义能抽象类
2.抽象类不能实例化,及不能用new来实例化抽象类
3.抽象类可以包含属性、方法、构造方法。但是构造方法不能用来new实例化,只能用来被子类调用。
4.抽象类只能用来继承。
5.抽象方法必须被子类实现。
抽象方法的意义在于:将方法的设计和方法的实现分离了!
3.接口:
例子:interface I…{
方法
}
implements 是实现接口的意思, 比如你定义了一个接口 AImpl ,接口里面定义了几个方法 ,这时,你新建一个类,这个类需要用到刚刚定义的接口里面的方法,那么你就可以这样写你的类
public class Test implements AImpl { }
,但是要注意,如果你这个类实现了这个接口,那么,就必须重写这个接口里面的所有方法(接口里的方法都是抽象方法,没有方法体,只有方法的定义,具体的你可以搜索一下有关接口的描述)。java中,接口是可以同时实现多个的,即,class Test implements
AImpl,BImpl,CImpl { } ,每一个接口之间用逗号隔开,都知道java中是单继承的,但是,通过接口,我们就可以实现多继承,具体的,还要继续搜百度啦,还有,当类实现接口的同时,还可以同时集成另一个类,class Test implements AImpl extends TestFather{ }
4.回调的实现:在java项目中textopp中cn.yulei.opp.callback中
回调的本质是多态机制
模板方法模式
上传到main方法中的子类GameFrame02(继承父类MyFrame)就调用子类GameFrame02中的方法。
代码
paintFrame类:
packagecn.yulei.opp.callback;
//回调的实现
public class PaintFrame {
public static void drawFrame(MyFrame f){
System.out.println("启动线程");
System.out.println("增加循环");
System.out.println("查看消息栈");
//画窗口 这相当于一个模板
f.paint();
System.out.println("启动缓存,增加效率");
}
public static void main(String[] args){
drawFrame(new GameFrame02());
}
}
class GameFrame01 extends MyFrame{
public void paint(){
System.out.println("GameFrame01");
System.out.println("画窗口");
}
}
class GameFrame02 extends MyFrame{
public void paint(){
System.out.println("GameFrame02");
System.out.println("画窗口");
}
}
MyFrame类:
packagecn.yulei.opp.callback;
public abstract class MyFrame {
public abstract voidpaint();
}
interfaceIMyFrame{
void paint();
}
MyFrame父类想让所有子类中的方法重写那需要变成抽象类加abstract
其回调主要用于一个模板中某个位置需要多次改变。
5.内部类:分为成员内部类 静态内部类 匿名内部类 局部内部类。
创建静态内部类对象的一般形式为: 外部类类名.内部类类名 xxx = new 外部类类名.内部类类名()
创建成员内部类对象的一般形式为: 外部类类名.内部类类名 xxx = 外部类对象名.new 内部类类名()
成员内部类:
1.普通的成员内部类可以访问外部类的普通的属性方法。
2.普通的成员内部类可以看成外部类的普通的属性一样,他可以直接访问内部类内容。
如果要调用的话,内部类对象必须寄宿在外部类对象里边,必须先有外部类对象才能有内部类对象(创建外部类对象再创建内部类对象)。
静态内部类:
1.静态内部类对象存在但它外部类对象不一定存在,所以不能访问的外部类相关的普通属性,
2.静态内部类可以直接访问外部类静态属性和方法。
匿名内部类:
例 键盘监听监听事件代码;
语法 new父类构造器(实参类表)实现接口(){
匿名内部类类体}
局部内部类:
定义在方法内部。作用域只限于本方法。用的非常少。
6.String类 可以看w3c菜鸟教程
1.被final定义的类不能被继承,这种类不需要子类
2.StringBuilder(线程不安全,效率高)用这个,不用StringBuffer(线程安全,效率低)
网友评论