main方法引用成员变量

public class MethodTest{
    int i = f();
    int j = g(i);
    int f(){return 11;}
    int g(int n){return n * 11;}
    public static void main(String[] args){
        MethodTest mt = new MethodTest();
        mt.f();
        System.out.println(i);
        }
    }

上面程序编译报错,无法从静态上下文引用非静态变量i

所以可改为:

public class MethodTest{
    int i = f();
    int j = g(i);
    int f(){return 11;}
    int g(int n){return n * 11;}
    public static void main(String[] args){
        MethodTest mt = new MethodTest();
        mt.f();
        System.out.println(mt.i);
        }
    }

使用对象调用可避免。

时间: 2024-12-19 15:37:46

main方法引用成员变量的相关文章

引用成员变量 和 类对象做成员变量

注意: 1. 引用成员变量 必须在构造函数的初始化列表中进行初始化 2. 引用成员变量 并不为这个变量新辟空间:类对象做成员变量则是要对其新辟一段空间的. 如下代码中,使用date1做参数初始化person_ref和person_obj.person_ref的birth字段date1为同一个地址空间,而person_obj的birth字段则是新辟了一段空间. #include <iostream> using namespace std; class Date { int month, yea

final 关键字:用来修饰类,方法,成员变量,局部变量

final 关键字:用来修饰类,方法,成员变量,局部变量 表示最终的不可变的 1.final修饰一个类 表示当前的类不能有子类,也就是不能将一个类作为父类 格式: public final class 类名称 { class body } 一个类如果是final的,那么其中所有成员方法都不能被覆盖重写(因为没有子类),但是该类可以有父类 2.final关键字修饰成员方法 这个方法就是最终方法,也就是该类的子类不能覆盖重写这个方法 对于类.方法来说abstract.final不能同时使用,因为他们

OC语法2——OC的类,方法,成员变量的创建

类的创建: 与Java不同的是,OC创建一个类需要两个文件(.h和.m文件) 1> xxx.h:声明文件.用于声明成员变量和方法.关键字@interface和@end成对使用. 声明文件只是声明该类里成员变量和方法的格式(返回值类型,参数类型等),并不会实现它们. 在OC中继承用冒号表示,所有类都是继承于NSObject的,所以Sudent:NSObject.(这是和Java不同的,Java中所有类都继承于Object,但不用每定义一个类都写明继承关系,所有类都是默认继承于Object类的).

在类中添加方法和成员变量

在前面我们也了解到了Java语言的最小单位是类.在C语言中有着全局变量,在Java中也有. 在Java中添加全局变量(成员变量)是由三大部分组成的:访问修饰符.数据类型和成员变量. 而访问修饰符有这几种:public .private.protected或者不写(这种将使用默认访问修饰符). 我们在引用对象时,必须对其进行初始化,否则将会报错.如果我们不自己去初始化值,那马那么 电脑回自己默认初始值:0.0.0.null.false.空字符. 在Java类中添加方法也是由:访问修饰符.返回值.方

block块中引用成员变量引起内存泄漏问题

使用block要注意循环引用,因此在块中使用self前先使用__weak修饰生产弱引用 这里记录另一种情况:没有使用属性而是直接使用成员变量的时候 // 私有成员变量 @implementation SmartInfoViewController { UIColor *lightColor; } // 在块中直接使用lightColor会造成retain cycle self.colBlock = ^(UIColor *col) { lightColor = col; // 等价于 self->

子类可以继承父类的一切方法,成员变量,甚至是私有的,但是却不能够访问这些私有的成员变量和方法

1.关于私有成员变量 无论父类中的成员变量是私有的.共有的.还是其它类型的,子类都会拥有父类中的这些成员变量.但是父类中的私有成员变量,无法在子类中直接访问,必须通过从父类中继承得到的protected.public方法(如getter.setter方法)来访问. 2.关于静态成员变量 无论父类中的成员变量是静态的.还是非静态的,子类都会拥有父类中的这些成员变量. 3.关于被子类覆盖的成员变量 无论父类中的成员变量是否被子类覆盖,子类都会拥有父类中的这些成员变量. 原文地址:https://ww

反射②:调用构造方法、普通方法以及成员变量

先获取一个类(如Student) Class clazz = Student.class; ①获取构造方法:借助Class类某些可以获取对应类中声明的构造方法实例对象 //Test测试//返回该对象表示类参数列表相匹配的public构造方法(不含继承)对应的Constructor对象 Constructor constructor = clazz.getConstructor();//public //返回该对象表示类参数列表相匹配的构造方法(不区分访问权限)对应的Constructor对象 C

初识反射之三(获取方法和成员变量)

当你还是一个对象时,你通过了修仙,getClass()方法得道成仙,然后开心的当上了神仙.然后发现神仙也有很多种,赤脚大仙,风神电母.那么你是不是好奇曾经仰望的神仙(类)会有什么技能(方法)和名字呢?这就是这篇我们应该讨论的.哈哈哈! 万物皆对象.类和方法也是对象. 然后通过方法.通过 getMethods() 获得了里面的方法.而方法里面还有 你能看到人家自己声明的方法以及全部方法. 再细分的话,方法不是有返回值吗?还有参数嘛.这些都可以用方法获得,不过是得到的就是数组了.getRurnTyp

C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法

有些成员变量的数据类型比较特别,它们的初始化方式也和普通数据类型的成员变量有所不同.这些特殊的类型的成员变量包括: a.引用 b.常量 c.静态 d.静态常量(整型) e.静态常量(非整型) 常量和引用,必须通过参数列表进行初始化.    静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键字,其本质见文末. 参考下面的代码以及其中注释:#include <iostream>using namespace std; class BClass{public: BClass