
Preoblaganje
in prekrivanje metod
 |
Java
omogoča, da ima v nekem razredu več metod isto ime, razlikujejo se le v
argumentih. |
class Enemy
{
int posX,posY;
Enemy() {
posX=0; posY=0;
}
Enemy(int x, int y) { // preobložen konstruktor
posX=x; posY=y;
}
void move(int x, int y) {
posX += x;
posY += y;
}
void move(int x) { // preobložena metoda 1
posX=x;
}
void move(double x) { // preobložena metoda 2
posX=(int)x;
}
void move() { // preobložena metoda 3
posX=posY=0;
}
}
class Game
{
public static void main(String argv[ ]) {
Enemy x = new Enemy();
Enemy y = new Enemy(2,3); // klic preobloženega konstruktorja
double a=1;
int b=2;
x.move(3,1);
x.move(a); // klic preobložene metode 2
x.move(b); // klic preobložene metode 1
x.move(); // klic preobložene metode 3
}
}

Prekrivanje
metod
 |
V
izvedenem razredu lahko neko metodo prekrijemo z novo metodo z istim imenom
in argumenti. |
 |
Za
klic metode očeta, lahko uporabimo sintakso super.metoda(
), kot kaže primer. |
class Enemy
{
int posX,posY;
Enemy() {
posX=0; posY=0;
}
void move(int x, int y) {
posX += x;
posY += y;
}
void move(int x) {
posX=x;
}
}
class Alien extends Enemy {
void move(int x, int y) { // prekrita metoda 1
posX = 1+ posX*x;
posY = 1- posY*y;
}
void move(int x) { // prekrita metoda 2
super.move(x); // kličemo metodo razreda "očeta"
posX = 1+ posX*x;
posY = 1- posY*y;
}
}
class Game
{
public static void main(String argv[]) {
Enemy x = new Enemy();
Alien y = new Alien();
double a=1;
int b=2;
x.move(3,1);
y.move(3,1); // klic prekrite metode
}
}
