美文网首页
第四篇-面向对象(下)

第四篇-面向对象(下)

作者: 爱吃板栗的小女孩 | 来源:发表于2018-10-30 21:57 被阅读7次
1.单例:当有些类只能被程序创建一次时候,需要使用单例类

原则:为了避免被重复创建,将构造方法使用private修饰。根据良好的封装原理,被封装成private就还需要一个public方法作为访问点,且需要static修饰。除此之外,还需要保存已经缓存好的对象,为private。由于方法为static,故这个对象也需要为static才能访问。
<简单例子>

public class SingleClass {
    private static SingleClass instance;

    private SingleClass() {
    }

    public static SingleClass getInstance(){
        if(instance==null){
            instance=new SingleClass();
        }
        return instance;
    }
}

<双重检查锁机制>

public class Singleton {
    /**
     * 单例模式:
     * (1)构造方法私有化
     * (2)对外提供共有可调用的方法
     * (3)保证线程安全
     */
    private static Singleton instance;

    private Singleton() {
    }

    public static Singleton getInstance() {
        if (instance == null) {
            //保证了避免不必要的同步
            synchronized (Singleton.class) {
                if (instance == null) {
                    //保证null才会创建实例
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
2.final:final修饰的成员变量必须由程序员显示给定初始值

特点:可用于修饰类、变量、方法。一旦获得初始值就不可以被改变再重新赋值。
final变量:如果没有给定初始值,就会保持系统分配的初始值。还由于他一旦初始不能再重新赋值,这样就失去了其实际意义。所以必须显示给定初始值。如果在定义时候没有给定初始值,可以在后面代码进行赋值,但是只能有一次。
final方法:final修饰的方法不能被重写
final修饰的方法只是不能重写,但是可以重载

3.抽象类和抽象方法

需要使用关键词abstract。有抽象方法的类只能被定义为抽象类,抽象类里可以没有抽象方法。抽象类不能用于创建实例,只能被其他子类继承
规则如下:
a.抽象方法不能有方法体(private abstract void test();是抽象方法 private void test(){}是普通方法,只是方法体为空)
b.抽象类不能被实例化,无法使用new关键字来调用
c.抽象类的构造器不能由于创建实例,主要用于被其子类调用
由于final修饰的类不能被继承,修饰的方法不能被重写。而abstract修饰的类只能被继承使用,abstract修饰的方法只能被重写。故final和abstract永远无法一起使用。
static修饰的方法,表明该方法属于类,可以直接调用。但若用abstract修饰,由于方法体为空肯定报错。故abstract和static不能同时使用。
方法使用abstract,必须重写才有意义。故private和abstract无法同时使用
模板模式:
a.父类中只定义需要使用的某些方法,把不能实现的部分定义成抽象方法,由子类去实现
b.父类提供的方法可以是通用方法,并不一定都需要父类去实现,可以依赖子类来辅助

4.接口

包含:成员变量(只能是静态常量)、方法(只能是抽象实例方法、类方法或默认方法)、内部类(包括内部接口,枚举)
对于接口的成员变量:系统会自动增加static和final修饰,即会自动增加public static final形式
对于接口的方法:系统会自动给普通方法增加public abstract修饰。普通方法必须是无方法体,类方法、默认方法必须有方法体


接口和抽象类之间的区别

相关文章

  • 重拾Java (四)类和对象(面向对象)

    重拾Java第四篇-类和对象 Java是面向对象的一门语言,类作为面向对象的第一公民,有必要学习一下啦~ 类的建立...

  • 第四篇-面向对象(下)

    1.单例:当有些类只能被程序创建一次时候,需要使用单例类 原则:为了避免被重复创建,将构造方法使用private修...

  • 面向对象(下)

    NSInteger:大致等于long型整数 根据设备不同可能等于long可能等于int NSUInteger:大致...

  • 面向对象(下)

    final关键字 final关键字可用于修饰类、变量和方法,他有“无法改变”或者“最终”的含义,因此被final修...

  • 面向对象(下)

    包装类 8种基本类型不同于对象,没有成员变量和方法可以调用,在内存中也能存储在任何地方,包括栈内存、堆内存 之所以...

  • 面向对象下

    继承简介• 继承是面向对象三大特性之一• 通过继承我们可以使一个类获取到其他类中的属性和方法• 在定义类时,可以在...

  • Python中的面向对象

    Python中的面向对象 面向过程和面向对象的区别 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据和函数绑...

  • Java基础44道

    1、解释下什么是面向对象?面向对象和面向过程的区别? 面向对象是一种基于面向过程的编程思想,是向现实世界模型的自然...

  • python面向对象(下)

    一、面向对象,这个对象到底是什么? 这个对象不是python中的实例,python中我们把一个类的实例也叫做对象,...

  • Java 浅析三大特性之一封装

    在说Java 三个特性之前,我们先了解一下什么是面向对象,以及为什么Java是面向对象的语言。面向对象是区别于面向...

网友评论

      本文标题:第四篇-面向对象(下)

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