请选择 进入手机版 | 继续访问电脑版

好程序员-千锋教育旗下高端IT职业教育品牌

400-811-9990
我的账户
好程序员

专注高端IT职业培训

亲爱的猿猿,欢迎!

已有账号,请

如尚未注册?

[JavaEE] 好程序员大数据实用教程之面向对象进阶

[复制链接]
admin 发表于 2019-12-11 14:04:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
好程序员大数据培训分享实用教程之面向对象进阶:包的创建与使用
> 是对一个程序中指定功能的部分代码进行包装
构造方法
> 是一个方法
>
> 特殊点:
>
> 1. 构造方法没有返回值,不是指的返回值类型是void,而是根本就不写返回值类型
> 2. 方法名字和类名相同
> 3. 构造方法不能用static来修饰
>
> 构造方法调用的时机:
>
> 1. 通俗来讲:是在实例化一个对象的时候调用的
>
> 一般情况下,我们在构造方法中做什么:
>
> 1. 对对象的某一些属性进行初始化赋值操作
> 实例化对象的过程:
>
> Person xiaoming = new Person();
>
> new : 表示在堆上开辟空间
>
> 执行非静态代码段
>
> 然后再执行构造方法:
> 在构造方法中调用其他的构造方法
>
> > 可以使用this()的方式来调用其他的构造方法
> >
> > 注意事项:
> >
> > 1. this() 必须写在构造方法的第一行
> > 2. 不能循环调用
>
> 无参构造方法需要注意的问题
>
> > 1. 如果一个类中没有写构造方法,此时这个类具有一个默认的public权限的无参构造方法
> > 2. 如果一个类中写构造方法了,此时这个默认的public权限的无参构造方法将不再提供
代码块
> 非静态代码段
>
> **静态代码段**
>
> ```java
> static {
>     
> }
> // 当这个类第一次被加载到内存中的时候执行
> // 当你第一次使用这个类的时候执行(实例化对象、调用静态方法...)
> ```
private关键字与属性封装
> 是一种编程思想:
>
>  狭义上的封装:
>
> ​ 一个类中的某一些属性,我们不希望外界直接访问。(外界赋的值可能不是我们想要的值)。此时,我们可以将这个属性私有化(private),杜绝了外界直接访问这个属性的可能性。但是我们还需要再去提供用来访问这个属性的方法。(设置值、获取值)(setter/getter)
>
>
>
>  **private:**
>
> ​ 是访问权限修饰符的其中之一,可以用来修饰属性和方法。被private修饰的成员,只能够在当前的类中访问
**单例设计模式**
> 设计模式:
>
> ​ 是前人总结出来的,用来解决特定问题的一个解决方案。
>
> 单例设计模式:
>
> ​ 用来解决,在不同的模块中,我们需要访问到同一个类的同一个对象。
>
>  
>
> 关于私有化构造方法:
>
> ​ 其实这个操作,在单例中是不必须的。
1. 饿汉式
   ```java
   /**
    * 在这个单例设计的过程中,只要我们用到了这个User类,instance都会实例化
    * 此时,instance可能我们并不会使用到。所以会造成一定程度上的性能损耗。
    */
   class User {
       // 声明一个私有的、静态的、当前类的对象,并实例化
       // 因为这个instance是静态的,实例化的过程只会执行一次
       private static User instance = new User();
       // 提供一个public权限的、静态的、返回当前类对象的方法
       public static User getUser() {
           // 将刚才实例化的instance返回,因为这个instance只会实例化一次,所以无论这个方法执行多少次,最终返回的结果都是同一个对象
           return instance;
       }
   }
   ```
2. 懒汉式
   ```JAVA
   /**
    * 使用的时候再去实例化instance,没有多余的资源浪费
    * 这种方式,在多线程环境中有问题
    */
   class User {
       // 声明一个私有的、静态的、当前类的对象,不对他进行实例化
       // 什么时候需要获取这个对象的时候,再去实例化
       private static User instance;
       // 提供一个public权限的、静态的、返回当前类对象的方法
       public static User getUser() {
           // 在使用的时候,判断instance是不是null, 如果是,对他做实例化,如果不是,直接使用即可
           if (instance == null)
               instance = new User();
           
           return instance;
       }
   }
   ```


精彩内容,一键分享给更多人!
回复

使用道具 举报

您需要登录后才可以回帖

本版积分规则

关注我们
好程序员
千锋好程序员

北京校区(总部):北京市海淀区宝盛北里西区28号中关村智诚科创大厦

深圳西部硅谷校区:深圳市宝安区宝安大道5010号深圳西部硅谷B座A区605-619

杭州龙驰智慧谷校区:浙江省杭州市下沙经济技术开发区元成路199号龙驰智慧谷B座7层

郑州校区:郑州市二七区航海中路60号海为科技园C区10层、12层

Copyright 2007-2019 北京千锋互联科技有限公司 .All Right

京ICP备12003911号-5 京公安网11010802011455号

请您保持通讯畅通1对1咨询马上开启