好程序员大数据实用教程之面向对象进阶
2019-12-11 15:05
851 查看
好程序员大数据实用教程之面向对象进阶:包的创建与使用
是对一个程序中指定功能的部分代码进行包装
####构造方法
是一个方法
特殊点:
- 构造方法没有返回值,不是指的返回值类型是void,而是根本就不写返回值类型
- 方法名字和类名相同
- 构造方法不能用static来修饰
构造方法调用的时机:
- 通俗来讲:是在实例化一个对象的时候调用的
一般情况下,我们在构造方法中做什么:
- 对对象的某一些属性进行初始化赋值操作
实例化对象的过程:
Person xiaoming = new Person();
new : 表示在堆上开辟空间
执行非静态代码段
然后再执行构造方法:
在构造方法中调用其他的构造方法
可以使用this()的方式来调用其他的构造方法
注意事项:
- this() 必须写在构造方法的第一行
- 不能循环调用
无参构造方法需要注意的问题
- 如果一个类中没有写构造方法,此时这个类具有一个默认的public权限的无参构造方法
- 如果一个类中写构造方法了,此时这个默认的public权限的无参构造方法将不再提供
代码块
非静态代码段
静态代码段
static { } // 当这个类第一次被加载到内存中的时候执行 // 当你第一次使用这个类的时候执行(实例化对象、调用静态方法...)
private关键字与属性封装
是一种编程思想:
狭义上的封装:
一个类中的某一些属性,我们不希望外界直接访问。(外界赋的值可能不是我们想要的值)。此时,我们可以将这个属性私有化(private),杜绝了外界直接访问这个属性的可能性。但是我们还需要再去提供用来访问这个属性的方法。(设置值、获取值)(setter/getter)
private:
是访问权限修饰符的其中之一,可以用来修饰属性和方法。被private修饰的成员,只能够在当前的类中访问
单例设计模式
设计模式:
是前人总结出来的,用来解决特定问题的一个解决方案。
单例设计模式:
用来解决,在不同的模块中,我们需要访问到同一个类的同一个对象。
关于私有化构造方法:
其实这个操作,在单例中是不必须的。
-
饿汉式
/** * 在这个单例设计的过程中,只要我们用到了这个User类,instance都会实例化 * 此时,instance可能我们并不会使用到。所以会造成一定程度上的性能损耗。 */ class User { // 声明一个私有的、静态的、当前类的对象,并实例化 // 因为这个instance是静态的,实例化的过程只会执行一次 private static User instance = new User(); // 提供一个public权限的、静态的、返回当前类对象的方法 public static User getUser() { // 将刚才实例化的instance返回,因为这个instance只会实例化一次,所以无论这个方法执行多少次,最终返回的结果都是同一个对象 return instance; } }
-
懒汉式
/** * 使用的时候再去实例化instance,没有多余的资源浪费 * 这种方式,在多线程环境中有问题 */ class User { // 声明一个私有的、静态的、当前类的对象,不对他进行实例化 // 什么时候需要获取这个对象的时候,再去实例化 private static User instance; // 提供一个public权限的、静态的、返回当前类对象的方法 public static User getUser() { // 在使用的时候,判断instance是不是null, 如果是,对他做实例化,如果不是,直接使用即可 if (instance == null) instance = new User(); return instance; } }
相关文章推荐
- 百度地图Api进阶教程-用户自定义数据(标记和搜索)7.html
- 好程序员大数据教程Scala系列之高阶函数
- WebMatrix进阶教程(6):创建添加数据网页
- 讲给Android程序员看的前端教程(25)——基本数据类型
- Android入门进阶教程(20)-ContentProvider 数据共享
- 【Python高级工程师之路】入门+进阶+实战+爬虫+数据分析整套教程
- 好程序员大数据教程Scala系列之继承
- WebMatrix进阶教程(7):创建一个编辑数据网页
- 好程序员大数据教程分享Scala系列之Option_偏函数_String
- 好程序员大数据教程Scala系列之样例类_Option_偏函数
- 程序员用于机器学习编程的Python 数据处理库 pandas 进阶教程
- WebMatrix进阶教程(8):创建删除数据网页
- 好程序员大数据教程Scala系列之隐式转换和隐式参数
- 百度地图Api进阶教程-用户自定义数据(标记和搜索)7.html
- MongoDB 云上数据迁移之纯手工操作实用教程
- 简明python教程 --C++程序员的视角(五):面向对象的编程
- 大数据零基础学习全套教程(同样适合有一定基础想进阶的)
- TensorFlow 教程 --进阶指南--3.4数据读取
- Android入门进阶教程(23)-内存中读/取数据
- 程序员进阶路上不能错过的史上最全技术知识图谱秘籍 #精选大数据前端开发JAVA 今天在技术大海中游啊游游啊游,哇啊哈哈 ^_^发现了一份非常有用的超级技术图谱诶!