如何理解类的三种权限字段和静态字段?

1) 静态变量的作用就是给这个变量增长了生命周期,它的生命周期和全局变量是一样的。当变量为局部静态变量的时候,它的作用域为局部作用域,生命周期为全局生命周期。静态变量仅限制在当前类之内,外部文件(变量对象)不可以访问静态变量。

a) public ,protected, private是为了限制类中属性和方法的的作用域而设置的。

b) 类class的前身是结构体struct,结构体struct的作用就是描述对同一类事物的属性进行组合(composite),这就是计算机中的分类思想。

i. 结构体演变为类之后,为了支持继承思想,就有了protected和public关键字。凡是用protected关键字修饰的类属性的作用域延伸到子类中。

ii. private关键字修饰的类属性的作用域是限制在当前类之中的。

iii. public 关键字修饰的类属性的作用域最大,无论是类内部文件,还是类外部文件都可以访问类中的属性字段。

iv. 正式因为有了继承思想,像有些类的属性需要进行作用域限制,使得其作用域限制在本类中。有些类的属性是不需要进行限制的,所以需要扩大属性的作用域到子类。

v. 有了以上的限制之后,当外部文件需要访问类中的数据时,类应该提供一个访问类属性字段的访问器子程序接口,这个访问器子程序的作用域应该扩大到类的外部文件中。

vi. 所以推荐类的属性私有化,即用private描述。子类需要访问父类的属性或者方法时,可以设置该属性或者方法为protected权限。另外统一给类的私有属性提供公共的访问器子程序接口,从而使类的外部文件可以自由地对类对象的属性字段值进行存取。

vii. 我们可以发现这种分类思想和继承思想都是为了使程序可读性和可塑性提高,减少程序类与类之间的耦合度。类与类之间可以用继承和接口进行通信。

时间: 2024-10-10 16:29:59

如何理解类的三种权限字段和静态字段?的相关文章

20151015_系统分析阶段分析类的三种类型

在系统分析阶段将分析类分为三种类型:实体类.界面类.控制类. 1.实体类 实体类主要是作为数据管理和业务逻辑处理层面上存在的类别: 它们主要在分析阶段区分 实体类的主要职责是存储和管理系统内部的信息,它也可以有行为,甚至很复杂的行为,但这些行为必须与它所代表的实体对象密切相关 基本信息 上述给出的实体类的定义是比较抽象的.类具有继承和递归的特点,实体类可以在抽象类的基础上进一步定义具体的类 实体类是用于对必须存储的信息和相关行为建模的类.实体对象(实体类的实例)用于保存和更新一些现象的有关信息,

类的三种成员与继承

对于类而言,一共有三种成员类型,分别为private,protected,public.其中,如果数据成员的类型为private,可以默认不写.对于在类外使用的情况,private和protected是一致的,均不可以由外部直接访问,而public所包含的成员是可以由外部直接访问的.下面给出一个基本的例子. 12345678910111213141516171819202122 class Time { private: int hour; int minute; protected: int

C++ 中string类的三种模拟实现方式

1.原始版本(拷贝构造和赋值运算符重载时,需要重新开辟空间) #include <iostream> #include <string> using namespace std; class String { friend ostream& operator<<(ostream& os, const String& S); public: String(char* str = "") :_str(new char[strlen

持久化类的三种实例状态

一个持久化类的实例可能处于三种不同状态中的某一种.这三种状态的定义则与所谓的持久化上下文(persistence context)有关.hibernate的session对象就是这个所谓的持久化上下文. 瞬态:该实例从未与任何持久化上下文关联过.它没有持久化标识(相当于主键值). 持久化:实例目前与某个持久化上下文有关联.它拥有持久化标识(相当于主键值),并且可能在数据库中有一个对应的行.对于某一个特定的持久化上下文,hiberanate保证持久化标识与java标识(其值代表对象在内存中的位置)

深入理解hibernate的三种状态

本文转载自http://www.cnblogs.com/xiaoluo501395377/p/3380270.html 学过hibernate的人都可能都知道hibernate有三种状态,transient(瞬时状态),persistent(持久化状态)以及detached(离线状态),大家伙也许也知道这三者之间的区别,比如瞬时状态就是刚new出来一个对象,还没有被保存到数据库中,持久化状态就是已经被保存到数据库中,离线状态就是数据库中有,但是session中不存在该对象.但是大家又是否对hib

02-Hibernate实体类的三种状态

一.Hibernate的实体类有三种状态 Transient:瞬时状态,不被hibernate session管理,而且实体数据在数据库不存在 Persistent:持久化状态,被session管理,此时的对象被放在session的缓存中,实体对象存在数据库中. Detached:离线状态,实体对象在数据库中有数据与之对应,但是不被session管理 注意:被session所管理的实体对象,当对象的属性发生改变,在提交事务的时候会自动更新改变后的属性到数据库中. 下图是hibernate试题对象

C#中 sqlDataRead 的三种方式遍历读取各个字段数值

------------------------------------------------------------------------------------------------- 数据库的查询分析器中写上如下代码: ccreate table studentname( id  int   primary key  identity(1,1) not null ,name nvarchar(500) not null) insert into studentname values(

File类的三种构造方法

1 package cn.zmh.File; 2 3 import java.io.File; 4 /* 5 * 6 * File类的构造方法 三种重载形式 7 * 8 * */ 9 public class FileDemo1 { 10 public static void main(String[] args) { 11 fun2(); 12 } 13 //3 传递 父路径 子字符串路径 14 // 好处 父路径 File类型 父路径就可以直接调用File类的方法 ***** 15 publ

python类的三种方法

一.先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. ps.python中self,cls的区别 普通实例方法,第一个参数需要是self,它表示一个具体的实例本身.如果用了staticmethod,那么就可以无视这个self,而将这个方法当成一个普通的函数使用.而对于classmethod,它的第一个参数不是self,是cls,它表示这个类本身. # coding:utf-8 class Foo(object): """类三种方法语法形式"&