我试着理解为什么在谈论构造函数时类成员的可访问性之间存在差异.
请考虑以下示例:
class A {
static class B {
private B(String s) {}
private void foo() {}
}
static class C extends B {
public C(String s) {
super(s); // call B(String), which is private, and obviously accessible
}
void bar() {
foo(); // compilation error (symbol unknown), as B.foo() is private
}
}
}
Run Code Online (Sandbox Code Playgroud)
私人的私人成员A
不应该是私人的B
.对于字段和方法,情况确实如此,但似乎构造函数不遵循相同的规则.
从JLS-8(6.6.1.确定可访问性),我们可以阅读:
[...]
只有在类型可访问且声明成员或构造函数允许访问时,才能访问引用类型的成员(类,接口,字段或方法)或类类型的构造函数:
[...]
否则,声明成员或构造函数
private
,当且仅当它发生在包含成员或构造函数声明的顶级类(第7.6节)的主体内时才允许访问.
任何人都可以解释为什么构造函数可以访问C
,即使在声明时private
?
嘿一个有点奇怪的问题..
我正在构建一个网络应用程序,我想使用表单输入,但在某些情况下,我觉得表单标签会使 html 膨胀。我知道验证或网站工作不需要表单标签。但是关于可访问性,表单标签是否为这些用户提供任何语义支持?
我有一个按钮,它将使用输入字段中的数据,因此提交表单没有用。
如果只有一个输入后跟一个按钮,则选项卡索引也无关紧要。
<label>
Some Label: <input type="text" id="input">
</label>
Run Code Online (Sandbox Code Playgroud)
VS
<form>
<label>
Some Label: <input type="text" id="input">
</label>
</form>
Run Code Online (Sandbox Code Playgroud) 我们正在努力使我们的响应式站点之一更易于访问,但我们正在努力了解 ARIA,因为它似乎违背了将设计元素与 HTML 分离的核心原则。
例如,如果一个元素隐藏在 aria 中,则将其表示为 aria-hidden="true"。然而,大多数可见性是由媒体查询决定的,具体取决于屏幕大小等。
在其他情况下,元素的工作方式与媒体查询完全不同。因此,在某些尺寸下 aria-haspopup="true" 将是合适的,而在其他分辨率下,导航始终可见。
我是否遗漏了什么,或者我们是否再次使用此标准进行字体标签?我们是否应该适当地使用 javascript 添加/删除 aria 标签?
这是C++.我有以下程序:
#include <iostream>
using namespace std;
template <typename T>
class Base {
public:
T t;
void use() {cout << "base" << endl;};
};
template <typename T>
class Derived: public Base<T> {
using Base<T>::use;
public:
T x;
void print() { use(); };
};
using namespace std;
int main() {
Derived<float> *s = new Derived<float>();
s->Base<float>::use(); // this is okay
s->use(); // compiler complaints that "void Base<T>::use() is inaccessible"
s->print(); // this is okay
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Base :: use()不使用模板typename T.根据为什么我必须通过this指针访问模板基类成员? …