Тёмный

Java - overloading (1/2) 

생활코딩
Подписаться 348 тыс.
Просмотров 50 тыс.
50% 1

Опубликовано:

 

31 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 30   
@mj7081
@mj7081 Год назад
third가 0일 때도 avg 가 3으로 나눌 수 있게 생각 해봤습니다. boolean a; 로 전역 변수로 선언하고 public void setOprands(int left, int right) { System.out.println("setOprands(int left, int right)"); this.left = left; this.right = right; this.a = false; } public void setOprands(int left, int right, int third) { System.out.println("setOprands(int left, int right, int third)"); this.left = left; this.right = right; this.third = third; this.a = true; } public void avg() { if (a) { System.out.println((this.left + this.right + this.third) / 3); } else { System.out.println((this.left + this.right) / 2); } 이렇게 하면 a값이 true냐 false냐에 따라서 다르게 실행 되기때문에 third에 어떤 값이 들어가도 상관 없습니다. 더 좋은 방법 있으신분 또 써주시면 감사하겠습니다 ㅎㅎ
@HowToOrbit
@HowToOrbit 5 лет назад
12:34 에서 this.setOprands(left, right); 를 쓰셨는데 어차피 인자가 두개인 함수는 하나밖에 없는데 this가 없어도 되지 않나요?
@njdjwgu
@njdjwgu 4 года назад
네 없어도 됩니다. 코딩 스타일인듯 하네요
@변종길-g6e
@변종길-g6e Год назад
java 에서는 fold가 있습니까?
@seongong
@seongong 3 года назад
감사합니다
@유지훈-p2h
@유지훈-p2h Год назад
오버로딩은 같은 이름일지라도 다른 매개변수의 형식 또는 숫자에 따라 가능해진다
@wyj4549
@wyj4549 8 лет назад
질문입니다. 2개의 인자를 받았을 때는 평균을 구할 때 2로 나눠야하고, 3개의 인자를 받았을 때는 3개로 나눠야하는데, 동영상 내에서는 모두 2로 나누고 있습니다. 실수라고도 적어주셨지만 제가 궁금한 것은 각각의 상황에 맞춰서 평균값을 구하는 코딩입니다. 어떠한 것이 있는지요?
@leekimpark2413
@leekimpark2413 8 лет назад
+Wooyoung Jung if 쓰시면 될 듯
@TV-nk1rc
@TV-nk1rc 6 лет назад
만약 배열로 받을거라서 몇개의 변수들이 들어올지 모른다면 그변수.lengh함수를 통해 알아낸후 그 값을 변수로해서 나누시면됩니다
@jadenkim9733
@jadenkim9733 5 лет назад
저도 같은 생각을해서 avg() method 를 이렇게 변경해봤습니다. public void avg() { if (this.third != 0) { System.out.println((left+ right+ third)/2); } else { System.out.println((left+right)/2); }
@ttabot_official
@ttabot_official 4 года назад
package org.opentutorials.javatutorials.overloading; class Calculator { int left, right, third; int arg; public void setOprands(int left, int right) { System.out.println("setOprands(int left, int right)"); this.left = left; this.right = right; arg = 2; } public void setOprands(int left, int right, int third) { System.out.println("setOprands(int left, int right, int third)"); this.left = left; this.right = right; this.third = third; arg = 3; } public void sum() { System.out.println(this.left + this.right + this.third); } public void avg() { if (arg == 2) { System.out.println((this.left + this.right)/2); }else if(arg == 3){ System.out.println((this.left + this.right + this.third)/3); } } } public class CalculatorDemo { public static void main(String[] args) { Calculator c1 = new Calculator(); c1.setOprands(20, 40); c1.avg(); c1.sum(); c1.setOprands(20, 40, 60); c1.avg(); c1.sum(); } }
@njdjwgu
@njdjwgu 4 года назад
public void avg() { if(third != 0) print((left + right + third) / 3); else print((left + right) / 2); } 저는 이렇게 바꿨습니다! 왜냐하면 thrid가 0이라는건 third가 없다는 것과 같기 때문에 /2를 해주고 아니라면 /3을 하는 것입니다.
@yoonjinhun
@yoonjinhun 6 лет назад
int third가 추가 되었을때 전역변수에 int left랑 int right는 그냥 int left, right로 선언하는데 third는 왜 int third=0이라고 하셨는지 다른 이유가 있는건가요??? 아니면 third도 int third; 만으로 선언할수있나요???
@javacoder4387
@javacoder4387 6 лет назад
class CalculatorDemo에서 c1.setOprands(10, 20); c1.sum();       c1.avg(); c1.setOprands(10, 20, 30); c1.sum();       c1.avg(); 이렇게 런할때 c1.setOprands(10, 20, 30); 전 c1.sum(); c1.avg(); 에서 third가 0으로 정의가 안되있으면 에러가 생겨요.
@sangmandu
@sangmandu 5 лет назад
int third로만도 선언할 수 있습니다. third에 0을 대입한 이유는 sum과 avg함수를 보면 left + right + third 라는 줄이 있는데, 여기서 third에 값을 넣어주지 않았다면 우리는 당연히 0이라고 생각하지만, 컴퓨터는 그렇지 않습니다. 컴퓨터는 third라는 할당된 메모리의 위치에 있는(무엇이 있을지 아무도 모르는) 그런 위치에 가서 값을 가져오게 되고 결국 예기치 못한 결과를 초래할 수 있기 때문에 third에 0을 넣어 두개의 숫자끼리의 연산도 문제없이 처리할 수 있게 합니다
@njdjwgu
@njdjwgu 4 года назад
third = 0이라고 하신 이유는 컴퓨터는 third;라고 선언만 하면 그 값은 0이아닌 알수 없는 수로 되버립니다. 그래서 연산을 하려하면 오류가 나는것이죠, 같은 이유로 int left=0, right=0, third=0;라고 다 0으로 선언과 초기화를 동시에 하면 좋습니다.(물론, setOprands메소드를 호출하지 않고 연산을 하면 오류가 나게 하고싶다면 int left, right, third=0;로 하시면 됩니다.) 그리고 third도 third라고 선언만 할 수 있습니다.
@dujin_park
@dujin_park 3 года назад
@@njdjwgu자바는 전역 변수도 초기화를 안하면 0으로 설정되지 않는 건가요?
@빈쭈-g1e
@빈쭈-g1e 3 года назад
@@dujin_park int형식은 기본값이 0으로 자동 설정되어서 0으로 굳이 초기화 안해줘도 될껄요?
@njdjwgu
@njdjwgu 4 года назад
합계를 구할 때 무조건 /2를 해서 avg를 바꿔봤습니다 ! public void avg() { if(third != 0) print((left + right + third) / 3); else print((left + right) / 2); }
@8k220
@8k220 3 года назад
third가 전역변수 기본값이 0이라서 조건문을 그렇게 만드신거같은데 정말로 계산해야하는 third값이 정수0이라면 어떻게되는건가요?
@erinlee1075
@erinlee1075 4 года назад
드디어 오버로딩 끝 :)
@pondbig8109
@pondbig8109 2 года назад
같은 메소드명 다른 매개변수!
@지우-e7b
@지우-e7b 3 года назад
21.04.13 꾸준히하자 ㅠ.ㅠ
@gamdoli
@gamdoli 2 года назад
22/7/14
@Leebyungdu
@Leebyungdu 5 лет назад
20190617
Далее