JavaSE|03.基础语法(2)

Java安全|03.Java基础语法(2)

00x1 单例模式

  1. 定义:

    • 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

    • 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

  2. 应用场景

    • 类的构造过程复杂,需要经过多个步骤,如果让外部直接构造,可能会缺失部分步骤
    • 需要频繁的创建或销毁的对象
    • 创建对象耗时过多或消耗的资源过多,但又经常用到对象
  3. 简单示例

    public class Main {
        public static void main(String[] args) {
            SingleObject dome1 = SingleObject.getInstance(); 
            //通过getInstance()方法获取SingleObject类的实例对象
            SingleObject dome2 = SingleObject.getInstance();
            //主函数当中使用此类的getInstance()函数,即可得到系统当前已经实例化的该类对象,若当前系统还没有实例化过这个类的对象,则调用此类的构造函数
            System.out.println("dome1 = " + dome1);
            System.out.println("dome2 = " + dome2);
            System.out.println(dome1.equals(dome2)); 
            //equals()方法比较两个对象是否相同
        }
    }
    class SingleObject{
        private static SingleObject singleObject = null;
        private SingleObject(){
        }
        public static SingleObject getInstance(){
            if (singleObject == null) {
                singleObject = new SingleObject(); 
                //判断对象singleObject对象是否为null。若是则创建;若否则返回已有的对象。
            }
            return singleObject;
        }
    }
    
    >>>
    dome1 = SingleObject@682a0b20
    dome2 = SingleObject@682a0b20
    true
    

00x2 final关键字

  1. java中提供了一种语法,可以在数据初始化后不被修改,使用关键字final。
  2. final可以修改的对象
    • 修饰变量。修饰类中的变量需要对变量进行初始化,一般将final修饰的变量称为常量。
    • 修饰方法。被final修饰的方法不能被重写。且final不允许修饰构造方法。
    • 修饰类。被final修饰的类不能被继承。
    • 修饰方法参数。一旦修饰,参数无法修改。

00x3 抽象

  1. 定义

    • 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
  2. 抽象方法:只有声明,没有实现的方法称为抽象方法。

    • 语法:abstract 返回值类型 方法名(参数);
  3. 抽象类:不完整的类就是抽象类。包含抽象方法的类一定是抽象类,但是反之抽象类的方法不一定是抽象方法。

    • 语法 abstract class 类名

    • 抽象类无法实例化

    • 抽象类无法直接构造对象,但是可以通过子类间接构造对象.

    • 一个类只能继承一个抽象类。

    • 如果抽象类中含有抽象方法,子类继承时必须重写抽象方法。

      //demo1
      public class Abstract {
          public static void main(String[] args) {
              Fruits apple = new Fruits() {
                  @Override
                  void color() {
                      System.out.println("apple is red");
                  }
              };//对方法进行重写
              apple.color();
          }
      }
      abstract class Fruits{
          String fruitName;
          abstract void color();
      }
      >>>
      apple is red
          
          
      //demo2
      public class Abstract {
          public static void main(String[] args) {
              Apple apple = new Apple();
              apple.color();
          }
      }
      
      abstract class Fruits{
          String fruitName;
          abstract void color();
      }
      
      class Apple extends Fruits{
          @Override
          void color() {
              System.out.println("apple is red");
          }
      }
      >>>
      apple is red
      
posted @   c10udz  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示