请问成员变量的数据类型为什么可以是该类自身,如下,谢谢!

问题描述

请问成员变量的数据类型为什么可以是该类自身,如下,谢谢!

public class BinaryTree {

class TreeNode {

    private String data;

    private TreeNode leftNode;

    private TreeNode rightNode;

    public TreeNode(String data, TreeNode leftNode, TreeNode rightNode) {

        this.data = data;

        this.leftNode = leftNode;

        this.rightNode = rightNode;

    }

    public String getData() {

        return data;

    }

    public void setData(String data) {

        this.data = data;

    }

    public TreeNode getLeftNode() {

        return leftNode;

    }

    public void setLeftNode(TreeNode leftNode) {

        this.leftNode = leftNode;

    }

    public TreeNode getRightNode() {

        return rightNode;

    }

    public void setRightNode(TreeNode rightNode) {

        this.rightNode = rightNode;

    }

}
}

解决方案

因为编译一个类型的时候不需要预先知道这个类型的信息。
从需求上来说,一个对象的部分也是这个对象,这是很正常的。

类似的,函数的实现中可以包含对自身函数的调用,这个叫递归。
比如
int sum(int x)
{
if (x == 1) return 1;
return sum(x - 1) + x;
}

解决方案二:

对于面向对象的语言来说,一个类中能够使用的数据类型包括任何在本语言中合法的类型。
一个对象它属于引用类型数据实例,当然就可以出现在一个类中作为这个类的成员使用了,可能这个对象不是这个类的特有特征,但是它们存在一些必然或者实际行为动作中产生的间接联系,一个对象成为一个类的成员也就顺理成章,这样符合实际生活中的诸多现象。如 打印工作人员要打印文件,他一定就要使用打印机,打印机虽然不是打印工作人的本身特性,但是行为中要和其他对象进行交互,所以在程序设计中我们定义的打印工作人类就会包括一个打印机类型的属性了。。

时间: 2024-08-02 01:35:33

请问成员变量的数据类型为什么可以是该类自身,如下,谢谢!的相关文章

成员变量和方法的override的详解

变量|详解 原题://file: MyMain.class class Base{int a=10;public void show(){  System.out.println(a);}} class Ext extends Base{int a=200;public void show(String s){  System.out.println(s);}} public class MyMain{public static void main(String[] argv){  Ext ob

Java中方法的重写与成员变量的隐藏

这篇文章讨论了Java面向对象概念中一个基本的概念–Field Hiding(隐藏成员变量) 在讨论这个问题之前,我们看一段特别特别简单的代码,请问一下方法的数据结果是什么? /**   * @author Hollis 17/9/27.   */  public class FieldOverriding {        public static void main(String[] args) {          Sub c1 = new Sub();          System.

ios-block里为什么不能操作成员变量?

问题描述 block里为什么不能操作成员变量? 我想在一个block里对一个成员变量赋值,但是提示" use of undeclared identifier self"错误, 请问这是怎么回事? 代码如下: void (^successBlock)(id ) = ^(id responseObject){ NSLog(@"responseObject:%@",responseObject); NSInteger result = [[responseObject

static 成员变量-成员变量的问题 static修饰符

问题描述 成员变量的问题 static修饰符 为什么成员变量s前面一定要加static,否则就报错 解决方案 这个道理很简单,实例变量是每个对象实例都有的,而静态方法是一个类才有一个的. 看下面的代码 class Test { public int i; static void foo() { println(i); } } 我们假设这代码是可以编译的 看如下调用 Test t1 = new Test(); t1.i = 1; Test t2 = new Test(); t2.i = 2; Te

myapplication-继承自MyApplication的类的成员变量会被释放,设置为Null吗

问题描述 继承自MyApplication的类的成员变量会被释放,设置为Null吗 分析统计数据,发现APP经常由于空指针错误发生崩溃,主要使用场景是因为APP切换到后台,内存被回收. 有两个问题: 1.Android APP在模拟器开发中怎么模拟内存不足? 2.继承自MyApplication的类的成员变量会被释放,设置为Null吗? 请问怎么解决,有相关的日志吗? 解决方案 application一般保存一些全局对象,不会被释放,除非你自己释放,模拟内存不足,模拟器中(比如创建时)是可以设置

详解C++编程中类的成员变量和成员函数的相关知识_C 语言

C++类的成员变量和成员函数 类是一种数据类型,它类似于普通的数据类型,但是又有别于普通的数据类型.类这种数据类型是一个包含成员变量和成员函数的一个集合. 类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存空间.但是,在定义类的时候不能对成员变量赋值,因为类只是一种数据类型,本身不占用内存空间,而变量的值则需要内存来存储. 类的成员函数也和普通函数一样,都有返回值和参数列表,它与一般函数的区别是:成员函数是一个类的成员,出现在类体中,它的作用范围由类来决定:而普通函数是独立的,作

java中成员变量与局部变量区别分析_java

本文实例分析了java中成员变量与局部变量区别.分享给大家供大家参考.具体分析如下: 成员变量:在这个类里定义的私有变量,属于这个类. 创建以及使用成员变量 复制代码 代码如下: public class Person {     String name;     String Sex;     int age;     double Height;         public static void main(String arges[])     {         Person p=ne

关于将socket对象作为单例类的成员变量

问题描述 业务场景:1.系统在初始化时创建Socket对象(客户端)2.将创建的Socket对象作为系统全局变量,共其他方法使用.我的实现思路方法大致如下://系统初始化类publicclassInitialize{publicvoidinit(){Socketsocket=newSocket(ipAddress,port);//创建socket连接SocketSingleIntancessi=SocketSingleIntance.getSingleIntance();//将socket交由单

vc++-一个VC++关于添加成员变量的问题

问题描述 一个VC++关于添加成员变量的问题 在VC++开发系统中给对话框添加成员变量,有个选择,是用控件还是用值的,请问能不能同时用两个变量关联一个控件呢? 解决方案 一般来说,没有必要,你有了控件,那么可以调用对应的成员函数来获取值,当然你也可以同时关联,ctrl+w调出类向导,然后添加即可. 解决方案二: 可以的,不过你自己估计会被自己搞晕 解决方案三: 这个问题太难了,就像那个 3x5, 3x5=35 解决方案四: 这要看你要实现什么功能了,如果只是简单的取或设置控件的值,建议你直接用值