成员变量

2020-02-06

一曲冷凌霜 提交于 2020-02-06 21:00:55
Java的类(封装) 1:封装 1.封装概述是面向对象三大特征之一 (封装, 继承,多态) 是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的 2封装原则将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现。 对隐藏信息的操作和访问成员变量 private, 提供对应的getXx<()/setXxx()方法 3封装好处 通过方法来控制成员变量的操作,提高了代码的安全性把代码用方法进行封装,提高了代码的复用性 2:private关键字 是一个权限修饰符 ●可以修饰成员 (成员变量和成员方法) ●作用是保护成员不被别的类使用, 被private修饰的成员只在本类中才 能访问 针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作 提供"get变量名()"方法,用于获取成员变量的值,方法用public修饰 提供 "set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰 3: this关键字 1 this修饰的变量用于指代成员变量 方法的形参如果与成员变量同名,不带this修饰的变量是形参。 方法的形参没有与成员变量同名,不带this修饰的变量成员变量。 2什么时候使用this呢? 解决局部变量隐藏成员变量 3 this:代表所在类的对象引用 记住:方法被哪个对象调用,

linkin大话面向对象--java关键字

房东的猫 提交于 2020-02-06 06:51:11
java中的关键字有以下几个,他们不能作任何其它的用途。 发现没,java中的关键字全是小写,java是严格区分大小写的。 abstract default null synchronized boolean do if package this break double implements private threadsafe byte else import protected throw extends instanceof case false int return true catch final interface short try char finally long static void class float native super while for new switch continue public transient static用法: static 表示 “ 全局 ” 或者 “ 静态 ” 的意思,用来修饰成员变量和成员方法,也可以形成静态 static 代码块,但是 Java 语言中没有全局变量的概念。 被 static 修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载, Java 虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此, static

内核第一宏:offsetof宏和container_of宏

你离开我真会死。 提交于 2020-02-06 02:42:00
绪论 通过结构体的整体变量来访问其中的各个元素,形式上是通过 . / -> 来访问,实质上是通过指针方式来访问的(编译器会自动计算偏移量)。在 C/C++ 中,其实可以用一些宏来计算结构体中成员变量与结构体的地址关系,那就是 offsetof宏 和 container_of宏 一、offsetof宏 offsetof 宏:通过虚拟一个 type 类型的结构体变量,然后用 type.member 的方式来访问 member 这个成员变量,继而得到 member 相对于整个变量首地址的偏移量 1.1 offsetof 宏的实现 在C标准库中有对 offsetof 的声明,需包含头文件 stddef.h : size_t offsetof ( type , member ) ; 在 Linux 内核中的实现原理如下: # define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) TYPE 是结构体类型, MEMBER 是结构体中一个成员变量名 宏返回的是 MEMBER 相对于整个结构体变量的首地址的偏移量,类型是 unsigned int(即size_t) 1.2 解析 &((TYPE *)0)->MEMBER 注意:优先级 -> 高于 & (TYPE *)0 是一个强制类型转化,将数字 0 强制类型转换成 TYPE *

Cracking Digital VLSI Verification Interview 第三章

大憨熊 提交于 2020-02-05 21:49:51
目录 Programming Basics Basic Programming Concepts Object Oriented Programming Concepts UNIX/Linux Programming in C/C++ Programming in PERL Programming Basics Basic Programming Concepts [68] 在任何一种编程语言中,静态(static)变量和自动(automatic)变量,局部(local)变量和全局(global)变量之间有什么区别? 区分这些名词需要两个概念,作用域(scope)和存储持续时间(storage duration),前者定义了在何处可以访问变量,后者定义了在何时可以访问变量。 按照变量的作用域可以区分局部(local)和全局(global)变量。局部变量的作用范围有限,尽在声明它们的代码块中可见。而全局变量在声明后在程序的任何位置都可见。 存储持续时间可以区分自动(automatic)变量和静态(static)变量。静态变量的生命周其一直持续到程序结束,因此可以始终访问。自动变量具有有限的生命周期,只能持续到程序离开定义的块或者作用域为止。 例如:在以下的systemverilog代码中,global_int被声明为类成员,并且在整个类中具有全局作用域,而当取消引用该类的对象时

JAVA学习笔记(二)

我怕爱的太早我们不能终老 提交于 2020-02-04 23:33:32
一、面向过程与面向对象 package array ; import java . util . Arrays ; /* 面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲历亲为,详细处理每一个细节 面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个已经具有该功能的人,来帮我做事 */ public class PrintArray { public static void main ( String [ ] args ) { int [ ] array = { 10 , 20 , 30 , 40 , 50 } ; //要求打印格式为:[10, 20, 30, 40, 50] //使用面向过程 System . out . print ( "[" ) ; for ( int i = 0 ; i < array . length ; i ++ ) { if ( i == array . length - 1 ) { //如果是最后一个元素 System . out . println ( array [ i ] + "]" ) ; } else { System . out . print ( array [ i ] + ", " ) ; } } //使用面向对象 //找一个JDK给我们提供好的Arrays类 //其中有一个toString方法

day08作业-韩明琰

懵懂的女人 提交于 2020-02-04 16:32:15
类和对象作业 填空题 1.类是组成Java程序的基本要素,类体有两部分构成:一部分是变量的定义,另一部分是_____方法______ 的定义。 2.执行Person p = new Person();语句后,将在___堆内存________中给Person对象分配空间,并在栈内存中给引用变量p分配空间,存放Person对象的引用。 3._____构造______是一种特殊方法,它的名字必须与它所在的类的名字完全相同,并且不书写返回值类型,在创建对象实例时系统自动调用。 4.局部变量的名字与成员变量的名字相同,若想在该方法内使用成员变量,必须使用关键字 _____this_______ 。 5.使用关键字 ____this_______ 来调用同类的其它构造方法,优点同样是以最大限度地代码的利用程度 ,减少程序的维护工作量。 6.用关键字 _____static_______ 修饰的成员变量是类变量,类变量是指不管类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量。 7.使用static修饰的变量称为静态变量,静态变量可以有两种访问方式,分别是类名.静态变量名和___ ______对象名______________。 8.在一个类文件中的关键字package,import,class出现的可能顺序是___ _____package import

从C#到Python —— 4 类及面向对象

▼魔方 西西 提交于 2020-02-04 13:18:08
如果你熟悉C#,那么对类(Class)和面向对象(Object Oriented)应该不会陌生。Python与C#一样,能够很好地支持面向对象的编程模式。本章对Python中面向对象编程的基本知识进行介绍,并将其与C#中的对应部分进行比较。 4.1 类的定义与实例化 4.1.1 类的定义 与C#一样,Python使用class关键字定义一个类。一个最简单的类定义语句如下: 1 class A:2 pass 它等价于C#中的 class A{}。当然,以上语句没有任何实际意义,它只是告诉我们什么是定义一个类所必需的,即:class关键字,类名和冒号,pass关键字只用来占位,相当于C#中花括号的作用。 4.1.2 类的实例化 类是定义对象格式的模板,而对象则是类的实例,通过类创建对象的过程称为类的实例化。在C#中,需要使用new关键字实例化一个类,例如 A a = new A(); 在上条语句中,C#完成了两件事情:首先声明一个类型为A的变量a,然后用new运算符创建一个类型为A的对象,并将该对象的引用赋值给变量a。而在Python中没有new关键字,同时它是一种动态语言,不需要事先指定变量的类型,只需要: a = A() 即可创建一个类型为A的对象,看起来好像是将类当作一个函数调用,返回值是新创建的对象。 4.2 类的成员变量 4.2.1 为类添加数据

Java基本概念

梦想的初衷 提交于 2020-02-04 05:44:05
问题及答案来源自《Java程序员面试笔试宝典》第四章 Java基础知识 4.1基本概念 1、J ava语言有何优势? 纯面向对象的语言 具有平台无关性,可移植性好 提供了很多内置的类库 提供了对web应用开发的支持 具有很好的安全性和健壮性 除去了C++中难以理解和容易混淆的特性(头文件、指针、多重继承等) 2、Java与C/C++有何区别? Java和C++的相同点: Java和C++都是面向对象语言,都使用了面向对象思想(例如封装、继承、多态等) 由于面向对象有许多非常好的特性(继承、组合等),因此二者都有很好的重用性 Java和C++的不同点: Java为解释性语言,而C/C++为编译型语言(Java执行速度比C/C++慢,但Java能跨平台执行而C/C++不能) Java代码运行过程:源代码通过Java编译器编译成字节码(.class),然后由JVM解释执行 C/C++代码运行过程:源代码通过编译和链接后生成可执行的二进制代码 Java为纯面向对象语言,所有代码要在类中实现,而C++兼具面向过程和面向对象编程的特点 Java没有C/C++中的指针 Java没有C++中的多重继承,但是Java引入了接口的概念,可以通过实现多个接口来实现与C++中多重继承一样的目的 在C++中需要开发人员管理内存分配(申请和释放),而Java中提供了垃圾回收器来实现垃圾的自动回收 C+

原来Matlab也可以有类

风流意气都作罢 提交于 2020-02-04 04:20:05
通常一个类应该包含四个基本的成员函数: 构造函数 ―― 与类名相同,可以在其中完成成员初始化的工作; 显示函数 ―― 名为display,用于显示成员的数据; 赋值函数 ―― 名为set,用于设置类成员的数值; 取值函数 ―― 名为get,用于读取类成员的函数。 与C++的类不同的是,MATLAB的类不需要特别的析构函数。如果类用到了一些特殊的内容需要释放的话,可以编写一个成员函数,比如classclear,用包来释放所占用的资源。 下面用一个简单的例子类介绍一些类如何使用。定义一个名为list的类,它有两个数据成员x和y,希望通过一个成员函数prod()来获取x和y的乘积。本例的类是这样的: 类名: list 成员变量:x,y 成员函数: list:构造函数 display:显示函数 get:取值函数 set:赋值函数 prod:计算函数现在就来建立它。 (1) 在工作目录上建立一个子目录: cd E:\MyProgram\matlab7\chap4 mkdir @list 类名前面要加上一个字符'@’,对于这样形式的目录里所有保存的M文件,MATLAB都认为是类的成员函数。 (2) 编写5个成员函数的M文件保存在E:\MyProgram\matlab7\chap4\@list 目录下: % list.mfunction d = list(x,y) d.x=x; d.y=y; d

OC的runtime运行机制

ぐ巨炮叔叔 提交于 2020-02-04 00:25:36
什么是runtime runtime就是一套底层的c语言API(Application Programming Interface)里面包括很多强大实用的c语言类型、c语言函数。 实际上,平时我们编写的oc代码,底层都是基于runtime实现的。 也就是说我们平时编写的oc代码最终都是转成了底层的runtime代码(c语言代码) 。 [obj say] —> 调用id objc_msgSend(id self, SEL op, ...)函数 -> 里面的obj.isa指针-> class -> class.cache_List -> class.Method_List -> superClass 例如 [obj say] ; 像这样对象执行一个方法的时候转成了runtime库里面的C语言函数即 objc_msgSend(objc, @selector(say)) 内部对象寻找到方法并执行的具体步骤: MRC开发环境下 1.先检查 @selector 方法是否可以省略 2.检查 target(目标对象objc) 是否为 nil,如果为 nil 就 clearout 并直接 return 3.找到 target 对应的class,然后根据 @selector 找到IMP(函数指针) 4.先从当前class的一个方法名叫cache_List缓存列表去找,找到就跳到对应的IMP实现方法