我正在努力用Java了解Variables Shadowed Methods Overriden继承概念.
情况1:
class Car{
public int gearRatio = 8;
public String accelerate() { return "Accelerate : Car"; }
}
class SportsCar extends Car{
public int gearRatio = 9;
public String accelerate() { return "Accelerate : SportsCar"; }
public static void main(String[] args){
Car c = new SportsCar();
System.out.println( c.gearRatio+" "+c.accelerate() );
}
}
Run Code Online (Sandbox Code Playgroud)
输出:8加速:跑车.
案例2:
public class TestClass{
public static void main(String args[ ] ){
A o1 = new C( );
B o2 = (B) o1;
System.out.println(o1.m1( …Run Code Online (Sandbox Code Playgroud) import java.awt.*;
import java.awt.event.*;
public class sample2 extends Frame
{
Button b[];
public sample2()
{
super("trying");
b=new Button[10];
setLayout(new FlowLayout());
for(int i=0;i<10;i++)
add(b[i]);
}
public static void main(String args[])
{
sample2 obj=new sample2();
obj.setSize(500,100);
obj.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
例外情况如下
Exception in thread "main" java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1037)
at java.awt.Container.add(Container.java:373)
at sample2.<init>(sample2.java:13)
at sample2.main(sample2.java:17)
Run Code Online (Sandbox Code Playgroud) 为什么输出在下面的情况下是不同的,即使变量已被覆盖?
public class A {
int a = 500;
void get() {
System.out.println("a is " + this.a);
}
}
public class B extends A {
int a = 144;
}
public class mainmethod {
public static void main(String args[]) {
B ob = new B();
System.out.println("a is " + ob.a);
ob.get();
}
}
Run Code Online (Sandbox Code Playgroud) 这是我第一次遇到阴影,似乎没有特定于我的问题的资源.
如果我做以下事情
let x = a list
let x = another list
Run Code Online (Sandbox Code Playgroud)
然后x将保存第二个列表的内容.
我假设(基于我的导师所说的)第一个列表不会自动销毁,只是在范围的末尾收集垃圾.
我的问题是为什么?一旦不可变被遮蔽,为什么我们不会自动删除第一个列表?这会让我认为数据仍然可以以某种方式被访问.如果是这样,怎么样?
鉴于以下...
#include <iostream>
using namespace std;
class BaseClass {
public:
void Func(float f) {
cout << "BaseClass:Func() called!";
}
};
class SubClass : public BaseClass {
};
int main() {
SubClass sub;
sub.Func(1.1f);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这几乎和人们预期的一样运行,导致以下输出......
BaseClass:Func() 调用!
但是,如果我将以下函数添加到 SubClass ...
class SubClass : public BaseClass {
public:
void Func(int i) { // accepts an int, not a float!
cout << "SubClass::Func() called!";
}
};
Run Code Online (Sandbox Code Playgroud)
像任何其他重载一样,如果我提供一个 int 作为我的参数,我希望 SubClass 函数被调用,如果我提供一个浮点数,我希望调用 BaseClass 函数。但是,如果我按原样运行程序(即使用浮点数),则情况并非如此......
SubClass::Func() 调用!
我提供的浮点数不是我所期望的,而是转换为整数,然后调用 SubClass 函数。似乎 SubClass 的函数有效地掩盖了 …
这是以下代码的结果:
import QtQuick 2.8
Item {
Reusable {
index: 1234 // reusable with a custom index
}
ListView {
anchors { fill: parent; margins: 20; topMargin: 50 }
model: 3
// Reusable with an index given by the ListView
delegate: Reusable {
index: index // <- does not work, both 'index' point to
// the index property
}
}
}
Run Code Online (Sandbox Code Playgroud)
import QtQuick 2.8
Text {
property int index
text: "Line " + index
}
Run Code Online (Sandbox Code Playgroud)
的ListView受让人0,1,2,等等到可变 …
我有以下类,一个隐藏(或阴影)内置函数的方法.我希望文档包含一个"另请参见"部分,该部分链接到隐藏的内置函数.
classdef CatHelper
%CATHELPER Makes implementing vertcat/horzcat easy on a custom class
%
% See Also: cat
methods (Abstract)
obj = cat(obj, ndim, varargin);
end
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,"see also"链接只是尝试在未记录的抽象方法上提供帮助CatHelper/cat.
如何指定我希望链接转到内置 cat函数?
我是python的新手。我正在学习 python 如何与 json 一起工作。在 pycharm 中编写此代码后,我在多个位置收到未解析的引用。“导入解析为其包含文件”。“在 json.py 中找不到对转储的引用”“在 json.py 中找不到对负载的引用”
导入 json 时出现此错误,调用了 load() 和 dumps() 方法。这是我学习 Python 编码的视频链接。
https://www.youtube.com/watch?v=9N6a-VLBa2I&list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU&index=44
请帮我解决这个问题。
import json
# Decoding json string to python.
# This a python string that happens to be a valid json also.
people_string = '''
{
"people": [
{
"name": "Sumedha",
"phone":"0987654312"
"City": "Middletown"
},
{
"name": "Ankit",
"phone":"9999999999"
"City": "Middletown2"
},
{
"name": "Hemlata",
"phone":"9865656475"
"City": "Chandigarh"
}
]
}
'''
# loads method loads the string.
data …Run Code Online (Sandbox Code Playgroud) 考虑以下 JavaScript 中的阴影示例:
let a = 99;
{
var a = 10;
let b = 11;
const c = 200;
console.log(a);
}
console.log(a);
Run Code Online (Sandbox Code Playgroud)
在这里,我收到以下错误:
SyntaxError: Identifier 'a' has already been declared
Run Code Online (Sandbox Code Playgroud)
但在以下情况下,没有语法错误,代码完全有效。
var a = 99;
{
let a = 10;
let b = 11;
const c = 200;
console.log(a);
}
console.log(a);
Run Code Online (Sandbox Code Playgroud)
在第二种情况下var a在全局范围内声明并且let a在块范围内。但是为什么这在第一种情况下无效?在那里,let a将在单独的范围内声明,并var a应在全局范围内声明。为什么本案无效?
我使用 python 3.10.1,通过 ipython (7.31.0,调用相同的 python 3.10.1)交互进行探索,然后在脚本准备好后直接通过 python 进行探索。
我的代码中有一个错误,我将其简化为两者之间的以下行为差异:
[Python]
In [1]: any(map(bool, ("")))
Out[1]: <map at 0x7f7f2d6061d0>
Run Code Online (Sandbox Code Playgroud)
[CPython]
>>> any(map(bool, ("")))
False
Run Code Online (Sandbox Code Playgroud)
因为 IPython 中的输出map对象是真实的,所以当在语句中使用代码时,if两个程序将给出相反的结果。我想知道是什么导致了这种差异,是否可以采取任何措施来修复它,以及是否存在其他类似的错误(功能?)我应该注意。
shadowing ×10
java ×3
inheritance ×2
python ×2
any ×1
awt ×1
c++ ×1
class ×1
f# ×1
field ×1
ipython ×1
javascript ×1
jbutton ×1
matlab ×1
numpy ×1
overloading ×1
overriding ×1
qml ×1
qtquick2 ×1
variables ×1