成员变量

类的六大关系之组合关系

烈酒焚心 提交于 2020-03-15 02:39:50
废话少说,直接上工程目录 对应的UML图 代码: package com.waibizi; /** * 说明:是整体与部分的关系,但部分不能脱离整体而独立存在。逻辑上能用"has a"表示。 * * 代码体现:成员变量。 * @author 歪鼻子 * */ @SuppressWarnings("all") public class Computer { private Mouse mouse = new Mouse(); private Moniter moniter = new Moniter(); public Mouse getMouse() { return mouse; } public void setMouse(Mouse mouse) { this.mouse = mouse; } public Moniter getMoniter() { return moniter; } public void setMoniter(Moniter moniter) { this.moniter = moniter; } } 来源: https://www.cnblogs.com/waibizi/p/12078865.html

java-static

 ̄綄美尐妖づ 提交于 2020-03-13 14:55:03
1.意思是静态的 2.可以修饰:方法、成员变量、内部类、代码块 3.修饰后有什么不同 - 修饰方法:(叫静态方法或者类方法) 1.这个方法对于其他类来说可以用“类名.方法”进行调用,也可以使用“对象名.方法”进行调用,推荐使用“类名.方法” 2.静态方法中是不允许出现,this,super,对本类的非静态属性,非静态的方法直接使用代码的 - 修饰成员变量 1.用static修饰的成员变量的值,表示是这个类型的所有对象“共享的” 2.static修饰的成员变量的值存储在方法区 3.static修饰的成员变量的get/set也是静态的 4.如果在方法中有局部变量与static修饰的成员变量同名时,在静态变量前面加“类名.”进行区别 ## 结论:非静态的“对象名.” ,静态的用“类名.” 来源: https://www.cnblogs.com/xhwy-1234/p/12485924.html

FutureTask源码完整解读

谁都会走 提交于 2020-03-13 03:06:14
1 简介 上一篇博客“ 异步任务服务简介 ”对FutureTask做过简要介绍与分析,这里再次对FutureTask做一次深入的分析(基于JDK1.8)。 FutureTask同时实现了Future 、Runnable接口,因此它可以交给执行器Executor去执行这个任务,也可以由调用线程直接执行run方法。 根据FutureTask.run方法的执行状态,可将其分为以下3种状态 ①未启动: run方法还未被执行,FutureTask处于未启动状态。 ②已启动: run方法在执行过程中,FutureTask处于已启动状态 ③已完成:run方法正常完成返回或被取消或执行过程中因异常抛出而非正常结束,FutureTask处于已完成状态。 当FutureTask处于未启动或已启动状态时,执行FutureTask.get()方法将导致调用线程阻塞;当FutureTask处于已完成状态时,执行FutureTask.get()方法将导致调用线程立即返回结果或抛出异常。 当FutureTask处于未启动状态时,执行FutureTask.cancel()方法将导致此任务永远不会被执行;当FutureTask处于已启动状态时,执行FutureTask.cancel(true)方法将以中断执行此任务线程的方式来试图停止任务;当FutureTask处于已启动状态时,执行 FutureTask

Activity窗口及视图的创建

∥☆過路亽.° 提交于 2020-03-12 12:41:06
Activity是Android应用程序的载体,允许用户在其上创建一个用户界面,并提供用户处理事件的API。但它并不是显示视图,实际上Activity调用了PhoneWindow的setContentView()方法,然后加载视图,将视图放到这个Window上,而Activity其实创建的时候初始化的是Window(PhoneWindow)。Activity其实是个控制单元,即可视的人机交互界面。打个比方,Activity是一个工人,它来控制Window;Window是一面显示屏,用来显示信息;View就是要显示在显示屏上的信息,这些View都是层层重叠在一起(通过infalte()和addView())放到Window显示屏上的。而LayoutInfalter就是用来生成View的一个工具,XML布局文件就是用来生成View的原料。 Activity类的成员变量mWindow的类型为Window,它用来描述一个应用程序窗口。通过这个成员变量,每一个Activity组件就都会有一个对应的Window对象,即一个对应的应用程序窗口。 Window类是一个抽象类,提供了绘制窗口的一组通用API。可以将之理解为一个载体,各种View在这个载体上显示。 Window类有一个类型为Context的成员变量mContext,它指向的是一个Activity对象

C++基础之static(静态)变量

巧了我就是萌 提交于 2020-03-12 11:43:07
static 表示静态 作用: 1、在函数体内,静态变量的值维持不变(记忆功能) 2、是一个本地的全局函数,即只能被本模块的函数访问(隐藏功能) static变量: static全局变量和普通全局变量的区别:static变量只初始化一次(即不能重复定义),这样可以防止在其他文件单元中被引用 static局部变量和普通局部变量的区别:static变量值初始一次,下次的运算依据是上一次的值(第二次碰到初始化语句直接跳过即可) static函数: static函数只能在一个源文件中有效,在其他源文件无效 类中的static: 1、无论类对象被定义多少个,静态数据成员始终只有一份,用作共享 2、静态数据成员存储在全局数据区,定义时要分配空间,即使类没有被实例化,静态数据成员也可以被使用 3、遵从public、private、protect访问 4、static的成员函数在类外初始化(类中只是声明,cpp中才是初始化),但此时不要加static关键字 5、static数据成员没有this指针(普通的类成员函数都有),因此不能访问类中的非静态成员函数,只能访问成员函数 优点: 1、不存在全局名字冲突 2、信息可以隐藏,可以为private 注:不要在头文件定义静态变量,不要在头文件定义任何变量 来源: https://www.cnblogs.com/huahua12/p/8495224

《深度探索C++对象模型》第三章:Data 语意学

ぃ、小莉子 提交于 2020-03-12 11:22:57
sizeof 内存对齐的一些规则: #pragma pack(n) 预编译指令,可用来设置多少个字节对齐,n的缺省数值是按照编译器自身设置,一般为8,合法的数值分别是1、2、4、8、16,其它的无效。 offset从0开始,每个数据成员开始存放的offset值为min(n, 数据成员大小)的整数倍。 在数据成员完成各自的存放之后,整个类也将进行内存对齐,其大小为min(n, 整个类中最大成员的大小)的整数倍。 如果一个类是空类,即里面无任何数据成员,那么它会有一个隐藏的1 byte 大小,那是被编译器安插进去的一个char,这使得两个objects得以在内存中配置独一无二的地址。 sizeof的大小受到三个因素的影响: 语言本身所造成的额外负担(vptr、vbptr(有些编译器有,也有可能会共用vptr)) 编译器对于特殊情况所提供的优化处理(如空类) 内存对齐的限制 class X {}; class Y : public virtual X {}; class Z : public virtual X {}; class A : public Y, public Z {}; int main() { cout << sizeof(X) << endl; //1 cout << sizeof(Y) << endl; //4 cout << sizeof(A) << endl; /

Java反射之成员变量的反射

微笑、不失礼 提交于 2020-03-11 13:08:03
上一篇介绍了 Java反射之构造方法反射 。这次我们在说一说如何反射类中的成员变量并用作一个简单案例。 [一]Field类 Filed类代表字段,包含字段拥有的所有属性,比如修饰符,变量类型,值等等,Filed类中有获得这些属性的方法。 和Constructor类一样都继承了 java.lang.reflect.AccessibleObject 类,该类中有方法来判断和设置私有属性能否访问。 下面举个演示如何修改、获得某个类中的变量: Point类: public class Point { public int x; private int y; public static int z = 10; public Point(int x, int y) { super(); this.x = x; this.y = y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } } 测试方法: public static void main(String[] args) throws Exception { Point p = new Point(3

Serializable在C#中的作用.NET中的对象序列化

我与影子孤独终老i 提交于 2020-03-10 18:17:26
简介 序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。 在面向对象的环境中实现序列化机制时,必须在易用性和灵活性之间进行一些权衡。只要您对此过程有足够的控制能力,就可以使该过程在很大程度上自动进行。例如,简单的二进制序列化不能满足需要,或者,由于特定原因需要确定类中那些字段需要序列化。以下各部分将探讨 .NET 框架提供的可靠的序列化机制,并着重介绍使您可以根据需要自定义序列化过程的一些重要功能。 持久存储 我们经常需要将对象的字段值保存到磁盘中,并在以后检索此数据。尽管不使用序列化也能完成这项工作,但这种方法通常很繁琐而且容易出错,并且在需要跟踪对象的层次结构时,会变得越来越复杂。可以想象一下编写包含大量对象的大型业务应用程序的情形,程序员不得不为每一个对象编写代码,以便将字段和属性保存至磁盘以及从磁盘还原这些字段和属性。序列化提供了轻松实现这个目标的快捷方法。 公共语言运行时( CLR )管理对象在内存中的分布, .NET 框架则通过使用反射提供自动的序列化机制。对象序列化后,类的名称、程序集以及类实例的所有数据成员均被写入存储媒体中。对象通常用成员变量来存储对其他实例的引用。类序列化后

java 成员变量和局部变量

好久不见. 提交于 2020-03-10 13:58:51
作用范围:   成员变量作用于整个类中   局部变量作用于函数中,或者语句中 存储位置:   成员变量:堆内存中,因为对象的存在,才在内存中存在   局部变量:栈内存中 来源: https://www.cnblogs.com/hongxiao2020/p/12455051.html

day11【final、权限、内部类】

China☆狼群 提交于 2020-03-08 22:30:15
day11【final、权限、内部类】 第一章 final关键字 1.1 概述 final关键字代表最终、不可改变的内容。 final:不可改变。用于修饰类、方法和变量 类:被修饰的类,不能被继承。 方法:被修饰的方法,不能被重写。 变量:被修饰的变量,不能被重新赋值 1.2 使用方法 1.修饰类 含义:当前这个类不能有任何的子类。(太监类) 格式: public final class 类名称{ // ...... } 注意:一个类如果是final的,那么其中的所有成员方法都无法进行覆盖重写(因为没有子类) 2.修饰成员方法 当final关键字用来修饰一个方法的时候,这个方法就是最终方法,不能被覆盖重写 格式: 修饰符 final 返回值类型 方法名称(参数列表){ // 方法体 } 注意事项: 对于类,方法来说,abstract和final关键字不能同时用,因为矛盾 public void Fu{ public final void method(){ System.out.println("父类方法执行~"); } } public void Zi extends Fu{ // 会发生报错 @Override public void method(){ System.out.println("重写父类方法~") } } 3.修饰局部变量 对于基本数据类型来说: