Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2010, 20:02   #1
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию зачем нужно ипользовать ключевое слово super?

Не могу понять зачем нужно ипользовать ключевое слово super.
Вот пробую что-то писать не выходит. Подскжаите, как правльно допистаь мой код ,чтоб увидеть зачем нужно это ключевое слово.
Код:
package proga10;
import java.math.*;
 
class Apelsin{
    int a,b;
 Apelsin(int x, int y){}    
}

class salo extends Apelsin{
    this.a=5; this.b=10;
    super();
}
        

public class Main {
  public static void main(String[] args) {
     System.out.println();
      
    }

}
Syltan вне форума Ответить с цитированием
Старый 18.05.2010, 21:06   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

super с параметрами вызывает конструктор базового класса.
Carbon вне форума Ответить с цитированием
Старый 18.05.2010, 21:19   #3
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

А можно пример, если не сложно.

Код:
package proga10;
import java.math.*;

class Apelsin{
    int a,b;
 Apelsin(int x, int y){}
}

class salo extends Apelsin{
        public salo(){
        super(5, 10);
        this.a=5; this.b=10;

        }
}


public class Main {
  public static void main(String[] args) {
     Apelsin r=new Apelsin(9,36);
      System.out.println(r.a+" "+r.b);

    }

}
Выводит нули вообще

Последний раз редактировалось Stilet; 19.05.2010 в 07:43.
Syltan вне форума Ответить с цитированием
Старый 19.05.2010, 04:52   #4
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Код:
class Apelsin{
    int a,b;
 Apelsin(int x, int y){}
}

class salo extends Apelsin{
        public salo(){
        super(5, 10);
        this.a=5; this.b=10;

        }
}


class Main {
  public static void main(String...args) {
     Apelsin r=new salo();
      System.out.println(r.a+" "+r.b);

    }

}
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 19.05.2010, 21:31   #5
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Вот експерементирую ещё, не срабатывает.
Код:
package proga10;
import java.math.*;

public class Main {

    static class Apelsin {

        int a, b;

        Apelsin(int x, int y) {
            this.a = x;
            this.b = y;
           }
    }

    static class salo extends Apelsin {

        public salo() {
            
            
            super(5, 10);
            System.out.println("From parent: " + a + " " + b);
            this.a = 1;
            this.b = 2;
            System.out.println("From myself: " + a + " " + b);
        }
        
        public int ona(int c1, int c2,int c3)
        {
            this.a=c1;
            this.b=c2;
            return ona;
        }
  
    }
            
    public  class vino extends salo()
  {
       super(9,3);
       System.out.println("Result: " + a + " " + b);
  }
    }

     
    public static void main(String[] args) {
        
              new salo();
    }
}
Вопрос ещё, метод super он должен постоянно находится внутри констурктора класса-потомка,чтоб вызвать метод или констуртор класса-родителя или необязательно?

Последний раз редактировалось Syltan; 19.05.2010 в 21:56.
Syltan вне форума Ответить с цитированием
Старый 20.05.2010, 00:16   #6
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Нет, не обязательно. Он может понадобиться тебе тогда, когда нужно воспользоваться унаследованными данными от класса родителя.
profi вне форума Ответить с цитированием
Старый 20.05.2010, 01:42   #7
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Код:
Он может понадобиться тебе тогда, когда нужно воспользоваться унаследованными данными от класса родителя.
Этот как, покажите на примере парустрочном.
Syltan вне форума Ответить с цитированием
Старый 20.05.2010, 08:10   #8
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
import java.util.*;

class A{
	
    private int a1,a2;
    
    A(){}
    
    A(int x, int y){
    	a1 = x;
    	a2 = y;
 	}
    
    public int getA1(){
    	return a1;
    }
    
    protected int getA2(){
    	return a2;
    }
}

class B extends A{
	
    B(int b1, int b2){
    	super(b1, b2);   // Вызываем конструктор базового класса А
    }
    
    public void f(){							  // Так как класс В наследник класса А, он
    	System.out.println("getA1(): " + getA1());                 // наследует как закрытые так и открытые данные  
    	System.out.println("getA2(): " + getA2());                 // и методы базового класса. Мы можем обратиться к
    }                                                                            // этим данным (a1 и а2) через методы getA1() и getA2().
}                                                                                // Это можно сделать лишь когда  getA1() и getA2() будут                   
                                                                                  // иметь спецификаторы public или protected.
public class Test {

	public static void main(String[] args) {
	     	B b = new B(1, 2);
	     	b.f();
		}
}
profi вне форума Ответить с цитированием
Старый 20.05.2010, 14:01   #9
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Из потомка можна вызвать конструктор класса-родителя. А как вызвать конструктор класса-родителя не из потомка, тоесть без ключевого слова super, такое возможно?
Syltan вне форума Ответить с цитированием
Старый 20.05.2010, 14:48   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
как вызвать конструктор класса-родителя
Дык это... <Имя класса>()...
По логике вроде так...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно файл (слово) поместить в рамку из # в ассемблере o12345 Помощь студентам 0 22.12.2009 01:06
MSVC++: ключевое слово operator Пепел Феникса Общие вопросы C/C++ 2 20.10.2009 21:32
Саундтрек из Super Mario rpy3uH Свободное общение 1 03.07.2008 16:34
Нужно вывести на экран каждое слово на новой строке. Юлёк PHP 5 28.01.2008 14:57