Чтение строк и сохранение их в 2-мерном массиве:
String[][] data=new String [10][10];
Scanner sc=new Scanner(System.in);
for(int i=0;i<data.length;i++){
for(int j=0;j<data[i].length;j++){
data[i][j]=sc.nextLine();
}
}
Это будет динамически вводить строки и сохранять в 2D-массив.
Вы в основном правы. Перегрузка имеет несколько методов в одном классе, где метод имеет одно и то же имя. Однако возвращаемое значение не рассматривается как часть подписи метода. Таким образом, вы не можете перегружать метод, изменяя только возвращаемое значение. У вас не может быть следующего кода из вашего примера:
public void setValue() {
this.value = 0;
}
public int setValue() {
return this.value;
}
Это не удастся скомпилировать.
Как определил Роб, я полагаю, вы имеете в виду переопределение , и у вас это правильно. Обратите внимание, что при переопределении вы не можете изменить тип возвращаемого значения. Начиная с Java 5, вы можете возвращать производный тип того, что возвращал метод базового класса. До Java 5 это должен быть идентичный тип. То есть, вы не можете делать ниже до Java 5 и позже:
public class AnimalNoise {}
public class Miaw extends AnimalNoise {}
public class Animal {
public AnimalNoise makeNoise() {
return new AnimalNoise();
}
}
public class Cat extends Animal {
public Miaw makeNoise() {
return new Miaw ();
}
}
Однако, даже в Java 5 и позже, вы не можете сделать следующее:
public class Animal {
public String makeNoise() {
return "silence";
}
}
public class Cat extends Animal {
public Miaw makeNoise() {
return new Miaw ();
}
}
public class Miaw {}
Наконец, большая разница между перегрузкой и переопределением, которая часто игнорируется, заключается в том, что перегрузка определяется во время компиляции, а переопределение определяется во время выполнения. Это застает многих врасплох, когда они ожидают, что перегрузка будет решена во время выполнения.
То, что вы описали, правильно.
Для большей ясности взгляните на концепцию полиморфизма. В Википедии есть хорошая статья
http://en.wikipedia.org/wiki/Polymorphism#Computing
http: //en.wikipedia. орг / вики / Polymorphism_in_object-oriented_programming
Правильно; перегрузка - это предоставление нескольких подписей для одного и того же метода.
Переопределение, которое, как я думаю, вы подразумеваете под «перезаписью», является актом обеспечения другой реализации метода, унаследованного от базового типа, и в основном является точкой полиморфизма. по наследству, то есть
public class Bicycle implements Vehicle {
public void drive() { ... }
}
public class Motorcycle extends Bicycle {
public void drive() {
// Do motorcycle-specific driving here, overriding Bicycle.drive()
// (we can still call the base method if it's useful to us here)
}
}