成员变量

成员变量和局部变量的区别

十年热恋 提交于 2019-12-06 10:58:14
1.定义位置不同。 局部变量定义在方法内部,成员变量定义在方法外部,在某个类内部。 2.作业范围不同。 局部变量只在方法内起作用,成员变量可以在方法外访问到。 3.默认值不同。 成员变量的默认值即为该数据类型的初始值,而局部变量没有默认值,在使用之前一定要先初始化。 class Person{ private String name;//成员变量,在方法外,类内部 private int age; public void show(int i){ //i也是局部变量,不需要初始化,因为调用方法时一定会传入i的具体值 String str="hello";//局部变量,方法内部才有作用,必须初始化 System.out.println(str+"这是第"+i+"个人"); } String str2=str;//报错,因为str是局部变量,方法外不能访问 String str3=name;//不报错,name初始值为null,所以str3的值也为null } 来源: https://www.cnblogs.com/iceywu/p/11979576.html

Java内部类详解

感情迁移 提交于 2019-12-06 10:26:51
内部类特点 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问 该类 。 内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,同一个类的成 员之间可以互相访问。但外部类不能访问内部类的实现细节 ,例如内部类的成员变量 。 匿名内部类适合用于创建那些仅需要一次使用的类 内部类与外部类的区别 内部类比外部类可以多使用三个修饰符: private 、 protected 、 static ,外部类不可以使用 这三个 修饰符 。 非静态内部类不能拥有静态成员。 非静态内部类 内部类一定是放在另一个类的类体部分 (也就是类名后的花括号部分) 定义 在非静态内部类里可以直接访问外部类的 private 成员 非静态内部类不能拥有静态成员 静态内部类的成员只在非静态内部类范围内是可知的,并不能被外部类直接使用。如果外部类需要访问非静态内部类的成员,则必须显式创建非静态内部类对象来调用访问其实例成员 不允许在外部类的静态成员中直接使用非静态内部类 外部类和非静态内部类的成员调用 当内部类的方法调用变量时, 首先在该方法中查找该变量名的局部变量 在内部类中查找该变量名的成员变量 在内部类所在的外部类中查询该变量名的成员变量 如果没有查找到则编译错误 如果内部类方法中的局部变量、内部类成员变量、外部类成员变量的名字相同,则可通过使用 this

面向对象基础

北战南征 提交于 2019-12-06 07:12:32
1. 三大特征 1.1 封装 1.2 继承(extends) 1.2.1 父类 1.2.2 子类 1.子类在同一个包下面能够范文父类除了私有private修饰的所有属性和方法 2.在不同包下面,子类对象只能访问public修饰的属性和方法 3.在子类内部,如果不同包的情况下,可以访问protected修饰的属性和方法,但是不能访问默认的访问修饰符修饰的属性和方法 4.子类在初始化的时候会先调用父类的默认不带参数构造器,如果没有,就会报错,我们只有人为的修改 (1).将父类添加一个无参数的构造器 (2).在子类构造器中手动使用super()声明调用哪个父类的构造器 1.3 多态 2. 类 2.1属性,成员变量,全局变量 当对象初始化之后,成员变量就会有初始值 String null 整型 0 浮点型 0.0 boolean false char (char)0 局部变量 1.定义的位置不一样 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 2.作用范围不一样 局部变量:只有方法当中才可以使用,出了方法就不能再用 成员变量:整个类全都可以通用。 3.默认值不一样 局部变量:没有默认值,如果想要使用,必须手动进行赋值 成员变量:如果没有赋值,会有默认值,规则和数组一样 4.内存的位置不一样 局部变量:位于栈内存 成员变量,位于堆内存。 5.生命周期不一样 局部变量

Java变量在内存中的存储

不羁岁月 提交于 2019-12-06 06:41:10
目录 Java变量在内存中的存储 成员变量 局部变量 总结 Java变量在内存中的存储 以下探究 成员变量 和 局部变量 在内存中的存储情况。 package com.my.pac04; /** * @author Summerday * @date 2019/12/1 13:05 */ public class ValStoreTest { public static void main(String[] args) { //分别创建两个Value类的实例,val0和val1 Value val0 = new Value(); Value val1 = new Value(); //修改val0的num值 val0.num = 5; System.out.println("val0's num = " + val0.num);//val0'num =5 System.out.println("val1's num = " + val1.num);//val0'num =0 //直接使用类调用类变量 Value.staticNum = 10; //使用实例对象调用类成员变量,不建议使用 //val0.staticNum = 10; System.out.println("val0's staticNum =" + val0.staticNum);//10 System.out

第50 课C++对象模型分析——成员变量(上)

独自空忆成欢 提交于 2019-12-06 06:27:13
C++对象模型,其实就是 C++中的对象在内存中是如何排布的 。 C++中的对象包含了成员变量和成员函数,其实就是研究C++中的类对象它的成员变量和成员函数在内存中是如何排布的。 回归本质 class 是一种特殊的struct(之所以特殊,是因为它们的默认访问级别不一样) -在内存中class依旧可以看作变量的集合 -class与struct遵循相同的 内存对齐 规则 -class中的 成员函数与成员变量是 分开存放 的    每个对象有独立的成员变量 (存在的位置可能是栈空间、堆空间、全局数据区)    所有对象共享类中的成员函数 (只可能存放在代码段) 实验一: #include<iostream> #include <string> using namespace std; class A { int i; int j; char c; double d; }; struct B { int i; int j; char c; double d; }; int main() { cout << "sizeof(A)=" << sizeof(A) << endl; //20bytes cout << "sizeof(B)=" << sizeof(B) << endl; //20bytes return 0; } 实验二: 在class A中,给它加上一个成员函数print

05-封装、继承和多态

偶尔善良 提交于 2019-12-06 05:42:33
                封装、多态和继承  封装 原则: 将属性隐藏起来,若需要访问某个属性需要提供公共方法对其访问。(方法是一种封装,private关键字也是一种封装) private关键字 private是一个权限修饰符,代表最小权限 可以修饰成员变量和成员方法 被private修饰的成员变量或成员方法只能在别类中使用 this关键字 this代表所在类的当前引用(地址值),即对象自己的引用 private String name; public void setName(String name){ this.name = name; } 通过谁调用的方法谁就是this 构造方法 当一个对象被创建的时候,构造方法用来初始化该对象,给对象的成员变量赋初始值。 修饰符 构造方法 (参数列表){ //构造方法名必须和所在的类名称(包括大小写)完全一样;无返回值 //方法体 } // 无参数构造方法 public Student() {} // 有参数构造方法 public Student(String name,int age) { this.name = name; this.age = age; } //不自定义有参构造方法时默认具有无参构造;一旦自定义了构造了有参构造方法,则必须新建无参构造方法就才能调用无参构造器 继承 继承:子类继承父类(父类、超类)的属性和行为

Java之继承性

北慕城南 提交于 2019-12-06 05:08:05
为什么要有继承 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那一个类即可。其中,多个类可以称为 子类 ,单独那一个类称为 父类 、 超类 或者 基类 。 继承的概念 继承 : 就是子类继承父类的 属性 和 行为 ,使得子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的 非私有 的属性和行为。继承描述的是事物之间的所属关系, 这种关系是: is-a 的关系 。继承的关系中,“子类就是一个父类”,也就是说子类可以被当做父类看待。例如,兔子属于食草动物,食草动物属于动物。可见,父类更通用,子类更具体。我们通过继承,可以使多种事物之间形成一种关系体系。继承主要解决的问题是 共性抽取。 好处 提高 代码的复用性 。 类与类之间产生了关系,是 多态的前提 。 继承关系当中的特点 子类拥有父类中 非私有 的属性和行为 子类还可以拥有 自己独有 的属性和行为 继承的格式 通过 extends 关键字,可以声明一个子类继承另外一个父类, 定义格式如下: 注意:父类只是一个普通的类 代码举例 定义父类 package MyCode.demo01; // 定义一个父类 public class MyFather { //父类中的成员变量 public int age = 18; //父类中的成员方法 public void

类、对象和包

不问归期 提交于 2019-12-06 04:24:13
类: Java 中的类用关键字 class 声明。Java 源代码文件中只能包含一公用(public)类,文件名 必须与公用类的类名相同,文件扩展名为“.java”。 对象的属性成为相关类中的成员变量。类中的一个成员变量由如下部分组成: 1. 访问修饰符 。可以是 public、private 或 protected;如果省略了访问修饰符,将使用默 认访问修饰符。 2. 数据类型。 3. 成员变量名称 。成员变量名称必须是一个有效的标识符,后面用分号结束。 例如: public class Employee {   public String name; //姓名    public String address; //邮寄地址    public int number; //员工号    public int SSN; //社保号    public double salary; //员工的工资    } 一个员工有姓名和地址,所以Employee 类就有一个 name 成员变量和 一个 address成员变量。 每个员工还有其它的属性,例如,身高、体重等等。 对象: 实例化对象: 在 Java 中,new 关键字用于实例化一个对象。new 运算符在内存中创建一个对象,并返回对新创建的对象的一个引用。只要我们的程序保留对该对象的一个引用,那么这个对象将一直 保留在内存中。 例如:

java之关键字static

烂漫一生 提交于 2019-12-06 04:10:43
static简单概述 static 关键字的基本使用,它可以用来修饰的成员变量和成员方法,一旦用了static关键字修饰,那么这样的内容不再属于对象而是属于类,凡是本类的对象都共享使用同一份。我们可以不靠创建对象来调用了。 成员变量:我们的是操作各种空间。类变量:我们操作的共享空间 static的使用 修饰成员变量 当 static 修饰成员变量时,该变量称为 类变量 。该类的每个对象都 共享 同一个类变量的值。任何对象都可以更改 该类变量的值,但也可以在不创建该类的对象的情况下对类变量进行操作。 类变量 :使用 static关键字修饰的成员变量。 定义格式: static 数据类型 变量名; 例如: package demo03; public class MyStudent { //定义类变量 static String room; } 修饰成员方法 当 static 修饰成员方法时,该方法称为 类方法 。静态方法在声明中有 static ,建议使用类名来调用,而不需要 创建类的对象。调用方式非常简单。 类方法 :使用 static关键字修饰的成员方法,习惯称为 静态方法 。静态方法不属于对象而是属于类。 定义格式: 修饰符 static 返回值类型 方法名 (参数列表){ // 执行语句 } 例如: package demo03; public class MyStudent

Java成员变量和局部变量

社会主义新天地 提交于 2019-12-06 03:24:45
目录 Java成员变量和局部变量 成员变量 实例变量 类变量 局部变量 形参变量 方法局部变量 代码块局部变量 关于命名 Java成员变量和局部变量 变量相当于一个有名称的容器,用于装不同类型的数据。而Java中根据变量定义位置的不同,又把变量分为 成员变量 和局部变量。 由于对修饰符还没有系统学习,就暂且以public访问权限最高的作为修饰符。 还是先上一段代码: package com.my.pac03; /** * @author Summerday * @date 2019/11/29 14:44 */ public class VariablesTest { //成员变量会默认初始化 public int value;//定义实例变量 public static String name;//定义类变量,属于类,而不是类的单个实例。 //main方法,程序入口 public static void main(String[] args) { VariablesTest test = new VariablesTest(); //实例访问实例变量 test.value = 10; //类访问类变量 VariablesTest.name = "typeName"; System.out.println(VariablesTest.name);//typeName /