该问题取自 AP 计算机科学练习测试。
public class Bird
{
public void act()
{
System.out.print("fly");
makeNoise();
}
public void makeNoise()
{
System.out.print("chirp");
}
}
public class Dove extends Bird
{
public void act()
{
super.act();
System.out.print("waddle");
}
public void makeNoise()
{
super.makeNoise();
System.out.print("coo");
}
}
Run Code Online (Sandbox Code Playgroud)
假设以下声明出现在 Bird 或 Dove 之外的类中:
Bird pigeon = new Dove();
Run Code Online (Sandbox Code Playgroud)
调用的结果是什么pigeon.act()?
我以为答案是“fly chirp”,但课本上说答案是“fly chirp coo waddle”。我认为“鸽子”只能访问 Bird 中可用的方法?我的印象是,如果用户想要访问 Dove 中的方法,则必须将“pigeon”转换为 Dove。
会Bird pigeon = new Bird();给出相同的输出吗?怎么样Dove pigeon = new Dove();?
我对Java很陌生,我想知道这实际上意味着什么:
List<Integer> list = new ArrayList<Integer>(); //Example 1
Run Code Online (Sandbox Code Playgroud)
为了将这个问题与其他问题区分开,我已经阅读了有关多态性以及示例1和示例2之间的区别的文章,并且我了解示例1允许“编程接口”。我还了解到,使用示例1,可以轻松将列表更改为LinkedList,而不会影响其余代码。
ArrayList<Integer> list = new ArrayList<Integer>(); //Example 2
Run Code Online (Sandbox Code Playgroud)
但是我想知道示例1的实际含义。是否创建一个新列表?还是创建一个新的ArrayList?结果对象是否具有列表的属性?还是生成的对象具有ArrayList的属性?我可以实现ArrayList在列表上使用的方法而没有编译错误吗?
这是我第一次发布问题,所以请让我知道是否可以进行任何改进。
我有一个看起来像这样的文件:
dog
cat
dog
dog
fish
cat
Run Code Online (Sandbox Code Playgroud)
我想在 Bash 中编写某种代码来使文件格式化为:
dog:1
cat:1
dog:2
dog:3
fish:1
cat:2
Run Code Online (Sandbox Code Playgroud)
关于如何做到这一点的任何想法?该文件非常大(> 30K 行),所以代码应该有点快。
我在想某种循环......
像这样:
while read line;
echo "$line" >> temp.txt
val=$(grep $line temp.txt)
echo "$val" >> temp2.txt
done < file.txt
Run Code Online (Sandbox Code Playgroud)
进而 paste -d ':' file1.txt temp2.txt
但是,我担心这会很慢,因为您要逐行进行。其他人怎么看?
java ×2
arraylist ×1
awk ×1
bash ×1
grep ×1
inheritance ×1
list ×1
polymorphism ×1
string ×1
superclass ×1