萌新学Java之java入门八

设计模式(设计思想)

  • 单例设计模式(单实例)
  • 核心:在程序运行中 无论如何创建对象,该对象有且只有一个存在

写单例对象思路

  • 1.对象不能让用户创建(不能在本类以外创建)
  • 2.对象应该在类的内部来创建
  • 3.开放一个让用户在类外面 能拿到对象的方法
饿汉式单例
懒汉式单例

区别:
* 饿汉式单例 不管使不使用开放的方法 都会将这个对象创建出来
* 懒汉式单例(双锁) 只有你第一次调用开放的方法 单例独享才会创建出来(延迟创建)

例:

    //饿汉式单例

class SingleE{
//自己创建对象
private static SingleE singleE = new SingleE();
//构造方法私有化
private SingleE() {
}
//开放一个方法 让外界能拿到对象
//外界不可能创建出对象 来调这个成员方法
//所以要使用静态方法
public static SingleE getInstance() {
return singleE;
}
}

//不完整的懒汉式单例(出现线程问题)

class SingleL{
//声明一个本类的对象的引用
private static SingleL singleL = null;
//私有化构造方法
private SingleL() {
}
//开放访问的方法
public static SingleL getInstance() {
if (singleL == null) {
//创建对象
singleL = new SingleL();
}
//直接返回对象
return singleL;
}
}

//调用这两个单例
SingleE s1 = SingleE.getInstance();
System.out.println(s1);

这里写图片描述

抽象类

抽象:

  • 关键词 abstract
  • 修饰类 抽象类
  • 修饰方法 抽象方法

注意:

  • 1.抽象方法 没有实现部分
  • 2.抽象方法 必须在抽象类中 才能声明
  • 3.抽象类中 可以没有抽象方法
  • 4.抽象类中可以有 常量 变量 抽象方法 成员方法 构造方法
  • 5.抽象类不能创建对象 可以使用多态的形式创建对象
  • 6.继承抽象类 子类必须实现 抽象类中的抽象方法
    例:

    abstract class Animal{
    final int num = 10;
    //抽象方法
    public abstract void eat();
    //构造方法
    public Animal() {
        System.out.println("抽象类构造方法");
    }
    //成员方法
    public void speak() {
        System.out.println("speak");
    }}
    class Cat extends Animal{
        //实现抽象方法
        @Override
        public void eat() {
            // TODO Auto-generated method stub
            System.out.println("吃鱼");
        }
        public void hit() {
            System.out.println("抓老鼠");
        }
    }
    

    public static void main(String[] args) {
    Animal animal = new Cat();
    animal.eat();
    //向下转型
    ((Cat) animal).hit();
    }

注意:

  • abstract关键字与那些关键字 不能共存
  • private 修饰 子类不能实现 抽象没有意义
  • final 修饰 子类不能被重写 抽象没意义
  • static 修饰抽象方法 就可以直接使用类名调用 但是抽象方法没有实现部分

接口

狭义:

  • 使用关键字 interface 来定义接口
  • interface 接口名{

    • }

广义: 接口相当于一个规范 需要人来遵守

  • 学生守则 保密协议 员工协议
  • *
注意:1.使用借口时 不是用的继承
  • 需要使用关键词 implement(实现)
  • 2.接口类不能直接创建对象
  • 3.接口类 不能声明成员方法
  • 4.接口类 不能声明构造方法
  • 5.使用多态的方式 创建对象
  • *
接口可以写:
  • 1.只能写抽象方法
  • 并且可以省去 public abstract 两个关键字
  • 2.只能写静态常量
  • 并且可以省略 public static final三个关键词

例:

    //声明一个接口(制定了一份规则)
    interface InterA{
    public static final int num = 10;//省略了public static final
    //抽象方法
    public abstract void fun();}
    //实现接口
    //规范: 实现类的类名 后缀 Impl
    class InterAImpl implements InterA{
    //实现接口中的抽象方法
    @Override
    public void fun() {
        System.out.println("实现类的fun方法;
        }}

//调用这个接口
public static void main(String[] args) {
//使用多态的形式来创建对象
InterA a = new InterAImpl();
a.fun();
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值