面向对象编程3

Posted on 2020-05-01 21:29  看到我请催我学习i  阅读(140)  评论(0编辑  收藏  举报

关键字static

01.在Java类中,可用static修饰属性、方法、代码块、内部类

02.被修饰后的成员具备以下特点:

        a.随着类的加载而加载
        b.优先于对象存在
        c.修饰的成员,被所有对象所共享
        d.访问权限允许时,可不创建对象,直接被类调用

03.类变量(即被static修饰的类属性)
        a.类变量不用实例化,直接 类名.属性名 就可以使用,是类的一部分,被所有类的实例化对象共享,也称为静态变量
        b.类变量的使用要小心,因为只要有一处改动说有对象都会得到变化
        示例代码:
            class Person {
                private int id;
                public static int total = 0;    //使用static修饰
                public Person() {                //构造方法,每new一个对象就使total加一并传给id
                     total++;
                     id = total;
                }
            }

04.类方法(即被static修饰的类方法)
        a.没有对象的实例时,可以用类名.方法名()的形式访问由static标记的类方法.
        b.在static方法内部只能访问类的static属性,不能访问类的非static属性.
        c.因为不需要实例就可以访问static方法,因此static方法内部不能有this和super.
        d.重载的方法需要同时为static修饰或者非static修饰.
        示例代码:

class Person {
      private int id;
      private static int total = 0;
      public static int getTotalPerson() { 
             id++;    //非法
             return total;
      }
      public Person() {
          total++;
          id = total;
      }
}

  单例 (Singleton)设计模式

01.设计模式:设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式.
02.单例设计模式:采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法
03.目的:实例化对象的创建需要消耗大量的时间和资源时,这种情况就适合用单例设计模式,或者没有必要频繁的new新对象

04.饿汉式单例设计(先new好一个对象,有需要时都用这个对象)

01.作用:对Java对象进行初始化
02.程序的执行顺序:
声明成员变量的默认值->静态代码块->显式初始化、多个初始化块依次被执行(同级别下按先后顺序执行)->构造器再对成员进行赋值操作
03.静态代码块:一个类中初始化块若有修饰符,则只能被static修饰,称为静态代码块(static block ),当类被载入时,类属性的声明和静态代码块先后顺序被执行,且只被执行一次。
04.static块通常用于初始化static (类)属性
代码示例:
class Person {
public static int total;
static {
total = 100;//为total赋初值
}
…… //其它属性或方法声明
}

05.非静态代码块:没有static修饰的代码块
a.可以有输出语句。
b.可以对类的属性声明进行初始化操作。
c.可以调用静态和非静态的变量或方法。
d.若有多个非静态的代码块,那么按照从上到下的顺序依次执行。
e.每次创建对象的时候,都会执行一次。且先于构造器执行
06.静态代码块:用static 修饰的代码块
a.可以有输出语句。
b.可以对类的属性声明进行初始化操作。
c.不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。
d.若有多个静态的代码块,那么按照从上到下的顺序依次执行。
e.静态代码块的执行要先于非静态代码块。
f.静态代码块只执行一次

关键字:final

 

01.在Java中声明类、属性和方法时,可使用关键字final来修饰,表示“最终”。
02.final标记的类不能被继承。提高安全性,提高程序的可读性。
03.final标记的方法不能被子类重写。
04.final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。
05.final标记的成员变量必须在声明的同时或在每个构造方法中或代码块中显式赋值,然后才能使用。
06.static final:全局常量

抽象类和抽象方法(abstract class and functions)

 

模板方法设计模式(TemplateMethod)

01.在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类

 

Copyright © 2024 看到我请催我学习i
Powered by .NET 8.0 on Kubernetes