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


  类与对象

类与对象是刚刚进入面向对象所必须知道的,因为面向对象中讲的属性与构造函数,现象与对象,继承多态,接口,抽象类都会用到类和对象,而且利用面向对象的思维去做一些小项目都会用到的,所以不可小视哦,嘻嘻!!!

好了,我现在开始通过自己的话分析类和对象。

科普一下下:

1)向对象是基于面向过程的,并不是用来淘汰的面向过程的。

2)如何使用面向对象的风格来编程?

            a.要实现一个功能,切记不要自己去实现。
            b.看看有没有现成的人可以做这个事情。
           FCL(框架内库): 库里m面有什么可以执行事情的变量,每个变量负责完成不同类型的功能,这些都是微软事先造好的。
            c.如果没有就造一个拥有执行这个功能的变量,该好处: 以后要实现这个功能的时候,就可以直接调用来使用。

1. 类:是对1群具有相同特征和功能的事物的1个统称,就是用来描述一群事物的. 所以说类不能直接使用.

2.定义类:
         a. 语法:
                    class 类名
                    {
                      
                    }
         b. 位置:
                    定义在命名空间的下面.

3.类的里面应该定义什么:
         a. 将这类事物拥有的共同特征定义为类的成员变量.
         b. 将这类事物拥有的共同的功能定义为方法.(我们在自己写的类中 不要加static关键字)

4.如何找到类中的1个对象 并使用这个对象呢?
                 创建对象的过程:
                 ①创建类的1个对象的语法:
                 类名 对象名 = new 类名();
                 Person p1 = new Person();

a. Person是自定义的数据类型 p1是1个变量.那么既然p1是个变量 就应该在内存中开辟空间.
                 b. new Person()是1个表达式


                 ②当执行到这句代码的时候. 就根据Person类的模板创建了1个p1对象.这个p1对象中有person模板中定义的所有的成员和方法。所以这个p1就可以使用,因为它是1个对象。

5.访问对象中的功能
                 对象名.成员

6.定义在类中的变量,我们统称为类的成员.
                 成员变量: 将这类事物具有的相同的特征 定义为成员变量. 也叫做 字段、成员字段.
                 方法: 将这类事物具有的相同的功能定义方法  也叫 成员方法。

7.new关键字做的事情:
                    1).   在堆内存中开辟1块合适大小的空间.
                    2).   在这个空间中根据类的模板来创建对象.
                          new的是哪1个类,就根据这个类的模板来创建对象.
                          类模板中有什么,都会依次的创建在这个对象中.
                    3).   调用这个对象的构造函数.
                    4).   返回这个对象在堆空间中的引用地址.

8.类的成员的访问修饰防
                  public 公共的.  被public修饰的成员可以在任意的地方通过对象名点出来访问.
                  private 私有的. 被private修饰的成员只能在本类的内部通过对象名点出来访问。
                  无论是public还是private修饰的成员  都可以直接在类的内部访问. 因为作用域.
                  如果我们不为类的成员写任意的访问修饰. 那么默认是private.

10. 命名空间
                  namespace 用于定义1个命名空间.
                  在命名空间中 我们可以定义类.  类是属于命名空间的.要访问类的地方所在的命名空间如果和类所在的命名空间是相同的.那么直接就可以使用类名来访问这个类.如果不一样: 那么就不能直接访问了.这个时候可以通过如下两种方式来访问:
                      a.  使用类的全名称:  使用顶级命名空间一直往下点到这个类.
                      b.  使用using关键字  将类所在的命名空间引入. 然后在这个页面中就可以直接访问这个命名空间中的类了.
                  命名空间的作用:
                     在同1个命名空间中 不允许定义多个类的名称是相同的.
                     命名空间的作用在于防止类名冲突.

11. 类是引用类型的.


                  值类型与引用类型.
                  值类型:所有的数值类型、bool、char、枚举、结构.
                  引用类型:string、数组、类.
                  相同点:
                  局部变量无论是引用类型还是值类型,这个局部变量都是开辟在栈空间中的.   
                  成员变量无论是引用类型还是值类型,这个变量是跟随着对象一起开辟在堆空间中的.     
                 不同点:
                  值类型的变量真实的值 直接存储在该变量中
                  引用类型的变量无论是局部变量还是成员变量 真实的对象存储在堆空间中. 变量中存储的是对象在堆空间中的地址.
                 
                  局部变量:定义在方法中的变量.
                  成员变量/字段/成员字段: 是直接定义在类下面
                 
                  值类型变量之间相互赋值: 因为值类型的变量中存储的是真实的值.所以拷贝传递的也是真实的值.
                                          赋值完成以后 对1个变量进行修改不会影响另外的1个变量的值.
                                         
                  引用类型变量之间相互赋值: 因为引用类型的变量中存储的是对象的地址 所以拷贝传递的也是地址
                                          赋值完成以后 对1个变量指向的对象进行修改 会影响另瓦的1个变量指向的对象
                                          因为这两个变量指向同1个对象.
                              
                  凡是看到了new关键字.就说明在内存中重新的创建了1个对象了.

注意:①在代码世界中,一定是先有类,然后可以通过这个类来创建对象,就是把类当做一块模板,然后程序员写的代码可以在创建对象的时候就可以根据这个类的模板进行创建.

② 如果通过对象名想去点出对象中的成员,但是发现点不出来.
                  原因有二:
                  a. 对象中根本没有这个成员
                  b. 有,但是访问权限不够.

③ 在写类的时候需要注意的2个规范.
                  a.  类的命名:  一定要有意义. 这个类描述的是哪1群事物 那么就用这个事物的名称来命名就可以了.
                       每个单词的首字母大写. 名词.
                       变量的命名规范: 名词。首个单词的首字母小写 其他的单词的首字母大写.
                       方法的命名规范: 动词. 每个单词的首字母大写.
                             
                  b.  1个类独占1个源文件.
                      我们在添加1个类的时候. 指定的名称是 新增的源文件的名称.
                      建议类的名称和这个源文件的名称保持一致. 这么做的好处方便管理.

④类的对象可以创建任意个.
                  同1个类的多个对象之间毫无关系.他们唯一的关系就是根据同1个模板创建出来的.
                  他们都具有相同的成员. 并且各自都拥有1份.特别是对象的字段的值. 对象之间互不影响  都是自己独有的.

⑤ 在using的时候 只要点到命名空间就可以 不要再点出类了.

⑥ 在方法中直接访问了字段的值.
                      方法的是谁的字段?方法属于那个对象, 那么访问的就是那个对象的字段 。

面向对象(基础oop)之类与对象的更多相关文章

  1. 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结

    086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...

  2. JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)

    一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...

  3. JS--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)

    一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...

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

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

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

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

  6. JS--我发现,原来你是这样的JS:面向对象编程OOP[3]--(JS继承)

    一.面向对象编程(继承) 这篇博客是面向对象编程的第三篇,JS继承.继承顾名思义,就是获取父辈的各种"财产"(属性和方法). 怎么实现继承? 我们的JavaScript比较特别了, ...

  7. 了解JavaScript 面向对象基础 & 原型与对象

    面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...

  8. JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)

    函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) {             return i1 + i2;//如果不写return返回 ...

  9. python-面向对象-03_面向对象基础语法

    面向对象基础语法 目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的 ...

  10. 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象

    079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...

随机推荐

  1. Scrapy 增量式爬虫

    Scrapy 增量式爬虫 https://blog.csdn.net/mygodit/article/details/83931009 https://blog.csdn.net/mygodit/ar ...

  2. 用python实现按权重对N个数据进行选择

    需求:某公司有N个人,根据每个人的贡献不同,按贡献值给每个人赋予一个权重.设计一种算法实现公平的抽奖. 需求分析:按照权重对数据进行选择. 代码实现: 1 def fun(n,p): 2 " ...

  3. CF914E Palindromes in a Tree

    $ \color{#0066ff}{ 题目描述 }$ 给你一颗 n 个顶点的树(连通无环图).顶点从 1 到 n 编号,并且每个顶点对应一个在'a'到't'的字母. 树上的一条路径是回文是指至少有一个 ...

  4. JDBC_设计架构_驱动类加载_建立Connection_效率测试

    JDBC(Java DataBase Connection) 访问数据库流程:驱动管理器--连接数据库--sql语句--结果集 装载mysql驱动 Class.forName("com.jd ...

  5. 加快npm包安装的方法

    一直以来都感觉使用npm安装包的速度特别的慢,但是由于npm上面的包比较齐全,所以一直在忍受这种安装依赖包的折磨. 不过这种折磨,到今天为止应该是可以结束了,在知乎看到一个这样的说法: 用npmins ...

  6. mysql数据库怎么使用,mysql的使用方法

    https://jingyan.baidu.com/article/5d368d1ec069c13f61c05742.html 数据库的开启与关闭: https://blog.csdn.net/u01 ...

  7. AngularJs--Dependency Injection 规则

    参考:https://docs.angularjs.org/guide/di AngularJs的依赖注入简称DI,在AngularJs项目中可以无处不在,到底应该注入些什么东东呢?一直是迷迷糊糊的, ...

  8. 洛谷 P2147 [SDOI2008]洞穴勘测 (线段树分治)

    题目链接 题解 早就想写线段树分治的题了. 对于每条边,它存在于一段时间 我们按时间来搞 我们可把一条边看做一条线段 我们可以模拟线段树操作,不断分治下去 把覆盖\(l-r\)这段时间的线段筛选出来, ...

  9. Linux 安装 Djiango

    yum 安装方法 以下安装位于 Centos Linux 环境下安装,如果是你的 Linux 系统是 ubuntu 请使用 apt-get 命令. 默认情况下 Linux 环境已经支持了Python. ...

  10. Codeforces - 71E 状压DP

    参考官方题解 #include<bits/stdc++.h> #define rep(i,j,k) for(register int i=j;i<=k;i++) #define rr ...