小编Jay*_*ant的帖子

Java:使用父类方法访问子类变量

我有以下场景:

public class A {

    private int x = 5;

    public void print()
    {
        System.out.println(x);
    }
}


public class B extends A {

    private int x = 10;

    /*public void print()
    {
        System.out.println(x);      
    }*/

    public static void main(String[] args) {
        B b = new B();
        b.print();
    }

}
Run Code Online (Sandbox Code Playgroud)

在执行代码时,输​​出为:5.

如何通过父类方法访问子类(B)变量(x)?

这可以在覆盖print()方法的情况下完成(即在B中取消注释)吗?

[这很重要,因为在重写时我们必须再次重写print()方法的整个代码]

EDITED

更多澄清: -

  • 问题的动机是从父类方法中使用子类私有变量的值.这不需要更改父类私有变量的值以实现期望的结果.
  • 但是,这里发布的答案让我得到了我想要的答案,我在下面发布了这个答案.

(感谢您的所有时间和帮助)

java oop inheritance

13
推荐指数
2
解决办法
5万
查看次数

std :: vector析构函数中的分段错误

我试图在SPOJ上解决问题(http://www.spoj.com/problems/GSS1)并最终使用Segment Tree制作以下代码.代码工作得很好.但是在某些输入上,当它试图从堆栈中取消分配向量的内存时,它会在程序结束时给出一个分段错误.我已经花了很多时间,但我找不到任何错误.任何帮助将受到高度赞赏.

#include <iostream>
#include <cmath>
#include <vector>

using namespace std;

struct Node{
    int bend;
    int bsum;

    int ebeg;
    int esum;
    int maxSum;

    Node(): bend(0), bsum(0), ebeg(0), esum(0), maxSum(0){}
    Node(const Node& other): bend(other.bend), bsum(other.bsum), ebeg(other.ebeg), esum(other.esum), maxSum(other.maxSum){}
    ~Node(){}
};

class SegmentTree{
    int N;
    vector<Node> M;
    vector<int> A;

    public:

    SegmentTree(int N){
        this -> N = N;
        Node temp;
        M.resize((1 << ((int)log(N)+2))+1, temp);
    }

    SegmentTree(const SegmentTree& other): N(other.N), M(other.M), A(other.A) {}

    ~SegmentTree(){
        M.clear();
        A.clear();
    }


    void put(int a){
        A.push_back(a);
    } …
Run Code Online (Sandbox Code Playgroud)

c++ destructor segmentation-fault

3
推荐指数
1
解决办法
3780
查看次数

标签 统计

c++ ×1

destructor ×1

inheritance ×1

java ×1

oop ×1

segmentation-fault ×1