面向对象(基础oop)之类与对象
大家好,我叫李京阳,,很高兴认识大家,之所以我想开一个自己的博客,就是来把自己所了解的知识点通过自己的话写一下,希望被博客园的朋友们点评和一起讨论一下,也希望从博客园中多认识一些软件开发人员!现在我开始讲一下面向对象的一点知识,请你们多多点评和讨论!!
类与对象
类与对象是刚刚进入面向对象所必须知道的,因为面向对象中讲的属性与构造函数,现象与对象,继承多态,接口,抽象类都会用到类和对象,而且利用面向对象的思维去做一些小项目都会用到的,所以不可小视哦,嘻嘻!!!
好了,我现在开始通过自己的话分析类和对象。
科普一下下:
1)向对象是基于面向过程的,并不是用来淘汰的面向过程的。
2)如何使用面向对象的风格来编程?
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)之类与对象的更多相关文章
- 086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结
086 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 03 面向对象基础总结 01 面向对象基础(类和对象)总结 本文知识点:面向对象基础(类和对象)总结 说明 ...
- JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)
一.介绍 老铁们,这次是JS的面向对象的编程OOP(虽然我没有对象,心累啊,但是可以自己创建啊,哈哈). JS高程里第六章的内容,这章内容在我看来是JS中很难理解的一部分.所以分成三篇博客来逐个理清. ...
- JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)
一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)
一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...
- JS--我发现,原来你是这样的JS:面向对象编程OOP[3]--(JS继承)
一.面向对象编程(继承) 这篇博客是面向对象编程的第三篇,JS继承.继承顾名思义,就是获取父辈的各种"财产"(属性和方法). 怎么实现继承? 我们的JavaScript比较特别了, ...
- 了解JavaScript 面向对象基础 & 原型与对象
面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...
- JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)
函数声明 JavaScript中声明函数的方式:(无需声明返回值类型) function add(i1, i2) { return i1 + i2;//如果不写return返回 ...
- python-面向对象-03_面向对象基础语法
面向对象基础语法 目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
随机推荐
- redis源码分析(3)sds
sds是redis中用来处理字符串的数据结构.sds的定义在sds.h中: typedef char *sds; 简洁明了!简明扼要!(X,玩我呢是吧!这特么不就是c中的字符串么?!).像redis这 ...
- linux下 zip解压 tar解压 gz解压 bz2等各种解压文件命令
.tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) ——————————————— .gz 解压 ...
- NetworkX初相识
听说NetworkX是一个很牛的复杂网络研究的工具,就来试一下吧. import networkx as nx G= nx.Graph()#建立一个空白的图 G.add_node("node ...
- centos虚拟机设置静态ip
1.虚拟机网络配置设置为桥接模式 2.设置配置文件: vi /etc/sysconfig/network-scripts/ifcfg-ens33 DEVICE=ens33 HWADDR=:0c::c3 ...
- [HNOI2006]公路修建问题 BZOJ1196 Kruskal
题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 输入输出样例 输入样例#1: 复制 4 2 5 1 2 6 5 1 3 3 1 2 3 9 4 2 4 6 1 输出 ...
- 11、C内存四区模型
转载于:https://blog.csdn.net/wu5215080/article/details/38899259 内存四区模型 图1.内存四区模型流程说明1.操作系统把物理硬盘代码load到内 ...
- Python之freshman05
一:内建模块 time和datetime(http://www.jb51.net/article/49326.htm) 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 ...
- 老男孩python作业4-ATM程序开发
实现一个ATM + 购物商城程序: 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 支持多账户登录 支持账户间转账 记录每月日常消费流水 提供还款 ...
- python-Generalization of Hops
python provides a general purpose HOP,map simple form-a unary function and a collection of suitable ...
- fread 快速读入 (神奇挂!)
注意这里是将后台的所有数据都读入在计算 #include<bits/stdc++.h> using namespace std; #define ll long long namespac ...