成员变量

类与对象、封装、构造方法

元气小坏坏 提交于 2020-01-27 04:49:15
一、什么是面向对象   Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面 向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算 机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去 操作实现。 二、面向过程和面向对象的区别(以洗衣服为例) 面向过程:强调步骤 eg:把衣服脱下来-->找一个盆-->放点洗衣粉-->加点水-->浸泡10分钟-->揉一揉-->清洗衣服-->拧干-->晾 起来 面向对象:强调对象 eg:把衣服脱下来-->打开洗衣机-->把衣服放进去-->按下按钮-->拿出来-->晾起来 面向对象的特点:    a:是一种更符合我们思想习惯的思想   b:可以将复杂的事情简单化(洗衣服的整个过程)   c:将我们从执行者变成了指挥者(指挥洗衣机去洗衣服)   d:包含三大基本特征:封装、继承和多态   e:管理和维护对象之间的关系。 三、类和对象的区别?   类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物     属性:就是该事物的状态信息。     行为

成员变量和局部变量同名问题

我与影子孤独终老i 提交于 2020-01-26 22:49:36
通过前面学习,基本明确了对象初始化过程中的细节,也知道了构造方法之间的调用是通过this关键字完成的。但this也有另外一个用途。 当在方法中出现了局部变量和成员变量同名的时候,那么在方法中怎么区别局部变量成员变量呢? 可以在成员变量名前面加上 this. 来区别成员变量和局部变量 class Person { private int age ; private String name ; // 给姓名和年龄初始化的构造方法 Person(String name, int age) { // 当需要访问成员变量是,只需要在成员变量前面加上 this. 即可 this . name = name; this . age = age; } public void speak() { System. out .println( "name=" + this . name + ",age=" + this . age ); } } class PersonDemo { public static void main(String[] args) { Person p = new Person( " 张三 " , 23); p.speak(); } } 来源: CSDN 作者: little-stars 链接: https://blog.csdn.net/weixin_41874888

c++中冒号(:)和双冒号(::)的用法

我的未来我决定 提交于 2020-01-26 17:32:54
c++中冒号(:)和双冒号(::)的用法 1.冒号(:)用法 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; XXX (2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型。 struct _XXX{ _XXX() : y(0xc0) {} }; (3) public:和private:后面的冒号,表示后面定义的所有成员都是公有或私有的,直到下一个"public:”或"private:”出现为止。"private:"为默认处理。 (4)类名冒号后面的是用来定义类的继承。 class 派生类名 : 继承方式 基类名 { 派生类的成员 }; 继承方式:public、private和protected,默认处理是public。 2.双冒号(::)用法 (1)表示“域操作符” 例:声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时, 就要写成void A::f(),表示这个f(

c++编译器对属性和方法的处理机制一

六眼飞鱼酱① 提交于 2020-01-26 14:44:38
通过上面的案例,我们可以的得出: 1)C++类对象中的成员变量和成员函数是分开存储的 成员变量 : 普通成员变量:存储于对象中,与struct变量有相同的内存布局和字节对齐方式 静态成员变量:存储于全局数据区中 成员函数:存储于代码段中。 代码如下,注意看注释: #include "iostream" using namespace std; class C1 { public: int i; int j; int k; protected: private: }; class C2 { public: int i; int j; int k; static int m; public: int getK() const { return k; } void setK(int val) { k = val; } protected: private: }; struct S1 { int i; int j; int k; }; struct S2 { int i; int j; int k; static int m; }; int main(int argc, char* argv[]) { cout<<"类C1的存储空间:"<<sizeof(C1)<<endl; //输出12,表明只会计算非静态变量的总存储空间,而静态变量存储在全局区,函数存储在代码区

c++ this指针

南笙酒味 提交于 2020-01-26 07:14:22
今天把this知识点做个汇总。 1.什么是this 先要理解class的意思,class应该理解为一种类型,象int,char一样,是用户自定义的类型。(虽然比int char这样build-in类型复杂的多,但首先要理解 它们一样是类型)。用这个类型可以来声明一个变量,比如int x, myclass my等。这样就像变量x具有int类型一样,变量my具有myclass类型。理解了这 个,就好解释this了,my的this 就是指向my的指针。如果还有一个变量myclass mz,mz的this就是指向mz的指针,对其的解引用*this就应该是一个 myclass类型的变量。如果有成员函数被调用,比如a.sum(),则sum函数可以通过隐形形参this来访问a,所以this是被调用对象访问调用他的对象的工 具,可以理解为this指向调用他的对象。默认情况下,this的类型是指向类类型非常量的常量指针,所以默认情况下,初始化时,我们不能把this绑定到 一个常量对象上去,因此,在参数列表的后面加上 const 修改this的属性,让其可以指向一个常量对象,可以增加函数的灵活性,这个成员函数也叫常 量成员函数。 2.this的用处 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部

Objective-C中的Block(闭包)

纵饮孤独 提交于 2020-01-25 10:41:18
转自http://www.cnblogs.com/ludashi/p/3903054.html?utm_source=tuicool&utm_medium=referral 学习OC有接触到一个新词Block(个人感觉又是一个牛气冲天的词),但不是新的概念,不是新的东西。学过Javascript的小伙伴对闭包应该不陌生吧~学过PHP的应该也不陌生,在PHP5.3版本以后也支持闭包, 也就是OC中所提到的Block。 到底什么是闭包或者block呢?用大白话说就是匿名函数,也就是在函数中可以包含这函数。就是在函数中可以定义匿名函数然后在函数中调用。学习OC中的block之前也小担心一下,Block在OC中属于高级的部分,心里有又有个疑问:学起来难不难?看过Block的部分,感觉Block挺好理解的,用起来也挺顺手的,Block没我想象中的那么难理解。 废话少说,学习一门新的编程语言是少不了代码量的支持的,所以代码是少不了的。下面就通代码来认识一下OC中的block的使用。 Block基础部分 1.Block的声明 Block的定义和函数的声明差不多,就是把函数名改成(^blockName)即可。下面是block声明的代码。 有返回值的 1 int (^sumBlock) ( int , int ); 无返回值的 1 void (^myBlock)( int , int ); 2

面经系列之 java基础

怎甘沉沦 提交于 2020-01-25 07:50:34
java基础 java基础 1 值传递和引用传递 2 为什么重写equals()时也要重写hashcode() 3 java面向对象特性 4 java和c++的区别 5 多态的实现原理 1 类调用 1)静态绑定 2)动态绑定 2 接口调用 6 抽象类和接口的区别以及使用场景 7 忘了之前要写啥了 8 反射 1)反射概述 2)获取class文件对象的三种方式: 3)反射机制的相关类 4)示例 9 注解 1)概述 2)四种标准元注解 3)示例 10 内部类 1)静态内部类 2)成员内部类 3)局部内部类 4) 匿名内部类 11 泛型 1)泛型方法 2)泛型类 12 java序列化(创建可复用的java对象) 13 java复制 1)直接复制赋值 2)浅复制 3)深复制 java基础 1 值传递和引用传递 值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。 引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。 一般认为,java内的基础类型数据传递都是值传递. java中实例对象的传递是引用传递。 首先是 基本类型与对象的比较: 四个例子: 1)基本类型 public static void main ( String [ ] args ) { int n = 10 ; foo ( n ) ; System . out .

day09_继承、super、this、抽象类

梦想与她 提交于 2020-01-25 07:00:28
继承 由来 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。如图所示: 其中,多个类可以称为子类,单独那一个类称为父类、超类(superclass)或者基类。 继承描述的是事物之间的所属关系,这种关系是: is-a 的关系 。例如,图中兔子属于食草动物,食草动物属于动物。在继承的关系中,“子类就是一个父类”。也就是说,子类可以被当做父类看待。例如父类是员工,子类是讲师,那么“讲师就是一个员工”。可见,父类更通用,子类更具体。我们通过继承,可以使多种事物之间形成一种关系体系。 继承主要解决的问题是共性抽取。 定义 继承: 就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为。 好处 提高代码的复用性。 类与类之间产生了关系, 是多态的前提。 继承的格式 通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下: 继承演示,代码如下: 定义员工类Employee,做父类 package demo01; public class Employee { // 定义name属性 String name; // 定义员工的工作方法 public void work() { System.out.println("尽心尽力地工作"); } }

静态修饰符

天大地大妈咪最大 提交于 2020-01-25 03:54:10
1:什么是静态变量:静态变量只能存一份,它属于类,不会随对象的创立而建立副本。如果不想在创建对象的时候就需要知道一些相关信息,那么就声明为static类型的。被修饰为static的成员变量不属于对象,他是属于类的。静态成员变量会被该类中的所有对象共享。 static语法: static 成员变量类型 成员变量名称 static String color="黄色"; //通过代码来演示修饰符的成员变量属于类,只存一份 public class xiushifu { //声明一个static类型的String类型的变量color static String color="绿色"; 创建xiushifu的构造器 public xiushifu(String color) { this.color+=color; } public static void main(String[] args) { //创建xiushifu的对象实例 xiushifu t1=new xiushifu("黄色"); xiushifu t2=new xiushifu("红色"); System.out.println(t1.color); System.out.println(t2.color); System.out.println(color); } } 静态变量访问: 当任何一个对象访问静态变量时

C++面向对象语法

天涯浪子 提交于 2020-01-25 01:54:17
语法 class 类名 { //成员变量 数据类型 变量名; //成员方法 //修饰符 public: //构造方法 类名(参数) { 成员变量=参数; } //普通方法 数据类型 方法名() { 方法体; return 返回值; } }; //对象的实例化,在main方法中进行 类名 对象名(参数)//参数的类型、个数、顺序必须和构造方法小括号里一致 //对象的成员变量以及方法的调用 对象名.成员变量名;//公有的成员变量 对象名.成员方法();//调用方法 * 来源: CSDN 作者: OY.. 链接: https://blog.csdn.net/qq_45738810/article/details/103940702