美文网首页
面向对象深入和数组深入

面向对象深入和数组深入

作者: 心跳小鹿_3a43 | 来源:发表于2020-03-22 16:06 被阅读0次

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(线程安全,效率低)

相关文章

网友评论

      本文标题:面向对象深入和数组深入

      本文链接:https://www.haomeiwen.com/subject/jzrvyhtx.html