我知道java中不存在抽象字段.我也读过这个问题,但提出的解决方案并不能解决我的问题.也许没有解决方案,但值得问:)
我有一个抽象类,它根据其中一个字段的值在构造函数中执行操作.问题是该字段的值将根据子类而改变.我该怎么做才能对子类重新定义的字段的值进行操作?
如果我只是"覆盖"子类中的字段,则对抽象类中字段的值进行操作.
我对任何确保在子类实例化期间完成操作的解决方案持开放态度(即将操作放在构造函数中每个子类调用的方法中都不是有效的解决方案,因为有人可能会扩展抽象类并忘记调用方法).
另外,我不想将字段的值赋予构造函数的参数.
有没有解决办法,或者我应该改变我的设计?
我的子类实际上是我的主程序使用的一些工具,因此构造函数必须是公共的并且完全采用它们将被调用的参数:
tools[0]=new Hand(this);
tools[1]=new Pencil(this);
tools[2]=new AddObject(this);
Run Code Online (Sandbox Code Playgroud)
(子类是Hand,Pencil和AddObject,它们都扩展了抽象类Tool)
这就是我不想改变构造函数的原因.
我即将使用的解决方案是将上面的代码略微更改为:
tools[0]=new Hand(this);
tools[0].init();
tools[1]=new Pencil(this);
tools[1].init();
tools[2]=new AddObject(this);
tools[2].init();
Run Code Online (Sandbox Code Playgroud)
并使用抽象的getter访问该字段.
我知道这在程序员中是一个相当有争议的问题,但在开发时我喜欢我的IDE来定位方法/接口/控制声明下面的开头花括号,为了说明目的: -
这就是Xcode自动生成骨架方法{最后: -
-(void) isTrue:(BOOL)input {
if(input) {
return YES;
}
else {
return NO;
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我喜欢布置代码的方式(我相信这叫做Allman风格): -
-(void) isTrue:(BOOL)input
{
if(input)
{
return YES;
}
else
{
return NO;
}
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道Xcode中是否有任何配置开关来实现这种开发方式?在键入if/ else语句时它真的很烦人,因为它倾向于使用行末尾自动完成else子句,{如果你喜欢在下面进行开发,那么看起来很傻.
还是我不合理?Objective-C是否应该遵守Apple定义的标准?
是否可以在PHP脚本中定义私有变量,以便这些变量仅在这个单独的PHP脚本中可见而在其他地方不可见?我想要一个包含文件,它可以在不污染全局命名空间的情况下执行某些操作.它必须与PHP 5.2一起使用,因此PHP命名空间不是一个选项.这里没有使用OOP所以我不是在寻找私人班级成员.我正在寻找"有点全局"的变量,这些变量在当前脚本中是全局的,但在其他任何地方都没有.
在CI中可以使用static关键字来实现它,但在PHP中是否有类似的东西?
以下是"common.php"脚本的简短示例:
$dir = dirname(__FILE__);
set_include_path($dir . PATH_SEPARATOR . get_include_path());
// Do more stuff with the $dir variable
Run Code Online (Sandbox Code Playgroud)
当我在一些脚本中包含此文件时,$ dir变量在所有其他脚本中也是可见的,我不希望这样.那我怎么能阻止这个呢?
有没有办法使用jQuery CSS主题主题HTML表(CSS)?
除了我看起来不同的HTML表之外,我的所有组件看起来都属于它们.
我在我的代码库中遇到了一个棘手的难题.我不知道为什么我的代码会生成此错误,但(例如)std :: string则不然.
class String {
public:
String(const char*str);
friend String operator+ ( const String& lval, const char *rval );
friend String operator+ ( const char *lval, const String& rval );
String operator+ ( const String& rval );
};
Run Code Online (Sandbox Code Playgroud)
这些的实现很容易想象你自己.
我的驱动程序包含以下内容:
String result, lval("left side "), rval("of string");
char lv[] = "right side ", rv[] = "of string";
result = lv + rval;
printf(result);
result = (lval + rv);
printf(result);
Run Code Online (Sandbox Code Playgroud)
这在gcc 4.1.2中生成以下错误:
driver.cpp:25: error: ISO C++ says that these are …Run Code Online (Sandbox Code Playgroud) 我知道要使用名为attrName的atttribute过滤元素,其值为attrValue,我这样做:
filter("[attrName='attrValue']")
Run Code Online (Sandbox Code Playgroud)
但是查看文档http://api.jquery.com/category/selectors/我看不到选择所有元素的选项st attrName> attrValue
这会有用吗
filter("[attrName>'attrValue']")
Run Code Online (Sandbox Code Playgroud) 我正在使用一个linux服务器,它以粗体显示目录,以及以普通字体显示文件.
例如$ ls生产
afile.txt afolder anotherfile.txt 另一个文件夹
我想在其他一些服务器上使用此功能.怎么做到呢?使用.bash_profile?
如果有人对如何区分文件夹和文件有其他想法,他们会很高兴知道吗?
最近我在接受采访时被问到以下问题:
有人可以解释这些问题的答案吗?我不知道他们中的任何一个.
我正试图描述一个快速排序代码.代码如下:
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
Run Code Online (Sandbox Code Playgroud)
请帮帮我!
ajax ×1
asp.net ×1
bash ×1
c++ ×1
coding-style ×1
constructor ×1
gcc ×1
haskell ×1
html ×1
html-table ×1
http ×1
inequalities ×1
java ×1
jquery ×1
jquery-ui ×1
linux ×1
objective-c ×1
php ×1
profiling ×1
quicksort ×1
request ×1
stdstring ×1
themeroller ×1
themes ×1
unix ×1
xcode ×1