2019-07-15

Day2

一. 静态成员和实例成员的区别:

1.访问方式不同

静态成员通过类名访问     类名Factor.create类名();

静态方法可以直接访问静态成员,不可以直接访问实例成员,必须要先new出对象,通过对象来访问

实例成员通过对象来访问  先new出对象  对象.方法名();

实例方法既可以直接访问静态成员,也可以访问实例成员

2.内存加载机制不同

静态成员在程序运行时,被加载到静态区域中

实例成员在执行时遇到new时,就把对应的内容加载到堆区域中

3.生命周期不同

静态成员在退出运行时,从内存中被销毁

实例成员要根据java的垃圾回收机制来决定何时销毁

二. 单例设计模式

在程序运行过程中,某个类的对象只允许被创建一次

1.构造方法私有

2.声明静态的.当前类类型的属性

3.声明静态方法:

返回值:当前类类型

在方法体内:判断第二步的静态属性是否为null

懒汉模式和饿汉模式

懒汉模式:在程序运行后,并没有立即去判断play是否为null,并创建对象

                   而是在执行到getInstance()方法时,才去判断并创建

饿汉模式:在程序运行后,立即new 创建对象

【选择】

    如果使用单例对象比较频繁,且在程序运行后立刻就使用单例对象,建议使用饿汉模式

    如果使用单例对象的频率较低,为了节省内存空间,建议使用懒汉模式

三.抽象方法,抽象类

抽象方法没有方法体,{}没有,并且使用abstract修饰

**1.抽象方法所在的类一定是抽象类

2.子类继承父类后,一定要实现(重写)父类中所有的抽象方法,除非子类也是抽象的

3.抽象方法约束了其子类必须实现(重写)父类中的抽象方法, 规范、约束的作用

特点:

    1、抽象类不能被实例化  不能被new

    2、抽象类有构造方法  子类构造方法中可以通过super调用父类构造方法进行属性的初始化

    3、抽象类中可以有抽象方法,也可以有非抽象方法

第一种方案:

  public class  父类{

      //虚方法

      public void test(){

      }

  }

  public class 子类1 extends 父类{

      //可以重写父类中的虚方法,也可以不重写

  }

  第二种:

  public abstract class  父类{

      public abstract void test();

  }

  public class 子类1 extends 父类{

      public void test(){

            //重写代码

      }

  }

部分总结

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容