大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开始讲一下面向对象的一点知识,请你们多多点评和讨论!!


              需要记得:1.在1个项目中 不能 直接访问 另外的1个项目中的类.
              2.在为对象的字段赋值的时候.语法上只要赋值的数据和字段的类型一致就可以.但是绝大多数情况下.还要考虑实际情理.
                 比如:
                 人对象的age字段 表示1个人的年龄 是int类型
                 语法上只要是1个int类型的数据都可以赋值.
                 但是情理上. 人对象的age 0-130岁.
                 
              3. 为了情理,我们有以下的需求
                 为对象的字段赋值的时候 要求这个值 符合情理. 而不是仅仅满足语法.
                 这个需求是写类的那个人的需求 而不是创建对象的那个人的需求.
                 解决方案:
                 a. 目的: 当外界为对象的字段赋值的时候.可以对这个值做1个逻辑验证.
                 b. 步骤
                     1). 要保护的字段必须私有化. 因为一旦public 那么外界就可以直接访问这个字段.
                         就可以直接为这个赋值,无法阻拦.
                         
                     2). 但是一旦私有化,外部1点机会都没有.
                         那么我们在类中提供1个为被保护的字段赋值的方法. SetXX()
                         这个方法接收1个参数,这个参数就是外界要赋值给字段的值.
                         在方法的内部 对这个值进行逻辑验证. 符合逻辑就将值赋值给字段.
                         不符合逻辑 我们就做默认处理.
                     3). 在外界如果要为对象的字段.需要调用这个方法才可以为字段赋值.
                     
                     4). 外界如果想要得到保护的字段的值,那么再写1个GetXX方法 用于专门返回被保护的字段的值
                         外界通过调用这个方法 得到字段的值.
                 
                 c. set 设置
                  get 得到.
 
                 d. 有同学犯错:
                    1). 被保护的字段一定要私有化.
                    2). 在赋值的方法中.是要判断用户准备赋值给字段的数据是否符合规范. 而不是判断字段的值.
             
                 
              4. 在方法中可以定义1个局部变量的名称和成员变量的名称相同 这是可以滴.
                 为什么? 因为成员变量跟随着对象一起开辟在堆空间中.
                         而局部变量 在方法被调用的时候 开辟在栈空间中
                         他们就算同名 1个在堆 1个在栈 是不会有任何影响的.
                         
                 如果在方法中直接访问这个同名成员成员的值 那么访问的是局部变量的值.
                 如果我们就是要访问这个同名的成员变量. 这个时候可以通过this关键字来点出这个同名成员.
                 
                 this代表:当前对象. this所在的方法属于哪个对象,那么this就代表这个对象.
                 
             
                 总结:
                   1. 当方法中有1个局部变量的名称和字段的名称相同.如果我们要访问字段.必须加上this
                   2. 其他情况下: 写不写this关键字 指的都是字段.
                      但是建议: 在方法中如果我们访问的是对象的成员 建议加上this 方便代码的阅读
 
 
                  为什么要保护字段??
                  希望对对象的字段赋值,赋值的这个数据在情理范围之内。
 
                 使用方法保护字段.
                  a. 将被保护的字段私有化.
                  b. 提供1个Set方法 专门用于为被保护的字段赋值.
                     在这个方法中验证 赋值 的数据是否符合规范.
                     如果符合就赋值 如果不符合做默认处理.
                  c. 再提供1个Get方法 专门用于返回被保护的字段的值.
 
 

                  1.属性
                 作用:和GET,SET方法一样的,是用来保护字段,只不过属性的语法更简洁。
 
                  2.属性的语法:
                   访问修饰符 属性的类型 属性的名称
                   {
                     get{}
                     set{}
                   }
 
                 3.如何操作?
                 可以向操作字段那样,通过赋值符号直接赋值,或者直接写上属性取值。

1.构造函数/构造方法 : 构造函数是一个特殊的方法。
 
2.构造函数的语法:
    a.访问修饰符大都数情况下是public。
    b.构造函数没有返回值,连void都不要写。
    c.构造函数的名称与所在的类的名称一致。
 
3.方法的特点在于,如果方法不调用,那么方法中的代码不会被执行。
   构造函数不能被程序猿手动调用。
  
   我们发现,在创建对象的时候,后面有一个小括弧。
    小括弧的作用:
     a.改变运算的优先级
     b.定义方法
     c.调用方法
     d.强制类型转换
     e.调用构造函数
 
总结:构造函数在创建虽然不能直接调用,可是可以通过NEW关键字自动调用。
 
4.注意:
   a.构造函数的名称一定是与所在的类的类名相同。
   b.构造函数与普通的方法的区别
       1)语法上的区别
       2)执行时机
 
5.构造函数其实就是一个特殊的方法
   特殊的地方
   1)语法上的特殊
   2)执行时机的特殊
 
6.普通的方法可以带参数,构造函数也是可以带参数的。
   在创建对象的时候,后面的小括弧是在调用对象的构造函数,必须在小括弧中为构造函数定义参数。
   在创建对象的时候,必须要调用构造函数。
 
7.构造函数是可以重载的,这就意味着在对象中可以加载多个方法。
   
8.构造函数的作用:
   特点:在于创建对象的时候自动调用。
   作用:如果我们有一段代码希望在创建对象的同时就执行,那么我们就可以将这段代码放在构造函数中。
            但是,一般情况下,不建议在构造函数中写一些特别消耗时间和性能的代码。
   绝大多数情况下,程序员使用构造函数来初始化当前的属性的值。
 
9.如果我们没有写构造函数,那么C#编译器在编译的时候,会自动的为这个类生成一个无参数的,空方法体的构造函数。
   所以我们这个时候才可以调用无参数的构造函数来创建对象。
   编译器自动生成的这个无参数的构造函数来创建对象。
   编译器自动生成的这个无参数的构造函数,我们就把它称为“隐式构造函数”;
   一旦程序员为这个类写了一个构造函数,那么编译器就不会自动生成  “隐式构造函数”了。
   如果就是希望存在哪个无参数,,那么就需要重新创建一个构造函数。
 
10.构造函数式不能被程序员手动调用,在普通的方法不能调用构造函数,但构造函数可以调用普通的方法。
     
     构造函数之间可以相互调用
 
 
 

面向对象(基础oop)之属性与构造函数的更多相关文章

  1. javascript面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)

    面向对象可以把程序中的关键模块都视为对象,而模块拥有属性及方法.这样我们如果把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作.接下来将为大家讲解在JS中面向对象的实现.   工厂 ...

  2. JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)

    什么是面向对象?面向对象是一种思想. 面向对象可以把程序中的关键模块都视为对象, 而模块拥有属性及方法. 这样如果我们把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作.   工厂 ...

  3. 面向对象(基础oop)之类与对象

    大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开 ...

  4. 石川es6课程---9、面向对象-基础

    石川es6课程---9.面向对象-基础 一.总结 一句话总结: js老版本的面向对象和继承都不是很方便,新版的面向对象向其它语言靠拢,有了class,extends,constructor等关键字,用 ...

  5. PHP中oop面向对象基础知识(一)

                                                                                        OOP 基础知识汇总(一) &g ...

  6. 面向对象(基础oop)之结构与数组高级

    大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开 ...

  7. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  8. python 自动化之路 day 面向对象基础

    1.面向對象基础概述 面向过程: 根据业务逻辑从上到下垒代码(如果程序修改,对于依赖的过程都需要进行修改.) 函数式: 将某功能代码封装到函数中,如后便无需重复编写,仅需要调用函数即可 面向对象: 世 ...

  9. JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)

    一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...

  10. JS--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)

    一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...

随机推荐

  1. 201621123023《Java程序设计》第12周学习总结

    一.本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 二.书面作业 本次PTA作业题集多线程 1. 面向系统综合设计-图书馆管理系统或购物车 使用流与文件改造你的图书 ...

  2. win10开始菜单任务栏点击无反应

    win+r,输入powershell,确定,输入Stop-Process -Name explorer,回车(这行代码是结束explorer进程,结束后它会自动重启)

  3. Java中类变量和实例变量的初始化

    1. 类变量和实例变量 类变量即类成员变量中的静态变量,它们可以通过类名来直接访问. 实例变量是类成员变量中的非静态变量,只有在实例化对象之后通过对象来访问. 2. 空间分配的时间不同 类变量是在类加 ...

  4. 读取Properties文件的六种方法

    1.使用java.util.Properties类的load()方法 示例: InputStream in = new BufferedInputStream(new FileInputStream( ...

  5. POJ1095 Trees Made to Order(JAVA)

    这题用到了卡特兰数,比较麻烦.关于卡特兰数的基本概念百度一下你就知道. 使用卡特兰数对数组元素进行分组之后,需要具体计算一下要求的是第几组的第几个数,然后向下递归. 首先来看利用卡特兰数分组: 从1开 ...

  6. 关于Hibernate的一个简单小程序

    本人根据视频学习了一下三大框架中比较简单的一个Hibernate,并简单完成了一个运用Hibernate的小程序 Hibernate是一个简化web程序Dao层的一个框架,应用他,可以完全脱离sql语 ...

  7. 【面向对象】【prototype&&__proto__&&实例化对象三者之间的关系】

    1.构造函数 a.什么是构造函数? 解释:通过关键字new 创建的函数叫做构造函数 作用:用来创建一个对象 废话少说直接上代码,首先我们还是创建一个构造函数人类 然后我们在创建两个实例,一个凡尘 一个 ...

  8. Spring事务杂谈

    1. 什么是事务 事务就是以一种可控的方式,对资源进行的一组操作,保证了资源在事务前后,始终应处于被期待的正确的状态.比如不会受到宕机等原因的影响.事务本身,具有如下4种属性-ACID.(所以说事务是 ...

  9. Secondary NameNode究竟是做什么的

    Secondary NameNode:它究竟有什么作用? 在hadoop中,有一些命名不好的模块,Secondary NameNode是其中之一.从它的名字上看,它给人的感觉就像是NameNode的备 ...

  10. RHCE 共享文件系统

    9.1 共享文件系统 概述: 共享文件系统通常有两种方式: 基于文件共享,一种直接共享文件夹给client端,常见的技术有NFS(Network File System )和 SMB (Server ...