
예외 예외 = 오류 제어, 처리 프로그래머가 예외사항을 처리, 관리할 수 있도록 고안한 방법 = 예외 처리 try - catch문 if - else if문과 비슷한 로직이야 ArithmeticException : 산술/수학적 예외 → at 어느 패키지.어디 클래스.어떤 메소드(n번째 줄) 에서 발생했다!는 뜻 divide 메소드를 보면 "계산 결과는 "은 오류가 아니니 출력이 되고 13번째 줄에 있는 나눗셈 연산에서 오류 발생 자바씨는 0으로 나누려고 하면 무조건 Err.. 자바씨 그렇게 안봤는데 무서운 사람이네.. → c1.setOprands의 입력값으로 c1.divide()를 호출하면 10/0 이니까 Err 발생 💪🏻 예외 처리를 위해 우리는 try - catch 문을 사용할거란다 public voi..

다형성 Polymorphism 하나의 메소드/클래스가 다양한 방법으로 동작 메소드의 다형성 오버로딩 class O { public void a(int param) { System.out.println("숫자 출력"); System.out.println(param); } public void a(String param) { System.out.println("문자출력"); Sysytem.out.println(param); } } public class PolymorphismOverloadingDemo { O o = new O(); o.a(100); o.a("다형성"); } 같은 이름의 a메소드의 파라미터(매개 변수)에 따라 출력값이 달라지는 것을 볼 수 있어 클래스의 다형성 클래스 B로 객체 obj를 만드..
인터페이스 interface abstract, final과 함께 대표적인 규제 중 하나 A 객체(클래스)가 특정한 인터페이스를 사용한다고 할 때, 그 객체는 반드시 인터페이스의 메소드들을 구현해야 하는 것이 인터페이스야 interface I { public void z(); } class A implement I { public void z() {} } 인터페이스 I는 z메소드를 마치 추상화처럼 시그니처만 정해놓음 → "클래스 A가 인터페이스 I를 구현한다" → 이때, 클래스 A는 z메소드 {}안에 로직을 만들어서 인터페이스I가 갖고있던 메소드를 구체적으로 구현하는 거야 인터페이스는 해당 클래스가 어떤 메소드를 갖고 있는지, 어떤 멤버를 갖고있는지 등 명세서 역할 이 명세서(인터페이스)에 적혀있는 대로 ..
abstract abstract로 지정한 메소드나 클래스는 직접 사용 불가하기 때문에 반드시 상속한 클래스를 만들어 사용하도록 강제하는 것 = abstract 한마디로 상 속 강 제 추상 클래스와 추상 메소드 package abstractclass abstract class A{ public abstract int b(); //Err2 } public class AbstractDemo { public static void main(String[] args) { A obj = new A(); // Err1 } } Err1: 추상클래스 A를 인스턴스화하여 바로 사용 X → 그래서 ① A클래스를 상속하는 B클래스 생성 → Err2: A클래스에 있는 추상메소드 b를 바로 사용할 수 없어 → 클래스 B가 추상메소..

접근 제어자 객체 소속 멤버S = 변수, 메소드 을 사용할 수 있는 사람들의 권한에 차등을 주어 제한 package fhkfhffhkffk class A { public String y(){ return "메소드 y의 리턴값"; } private String z(){ return "메소드 z의 리턴값"; } public String x(){ return z(); } } public class AccessDemo1 { public static void main(String[] args) { A a = new A(); System.out.println(a.y()); // result: 메소드 y의 리턴값 System.out.println(a.z()); // Err System.out.pritnln(a.x()..

API Application Programming Interface : 자바 시스템을 제어하기 위해서 자바에서 제공하는 명령어들 print 메소드도 자바에서 기본으로 제공하는 명령 → 프로그래머들은 API같은 명령어를 통해 프로그램, 소프트웨어 제어 UI User Interface 사용자와 접점이 있는 부분 ex) 게시판의 목록 → 일반 사용자들은 눈에 보이는 버튼 등과 같은 UI기능으로 프로그램이나 소프트웨어를 제어 더보기 💡 이고잉님 UI, API 강의.. 교양처럼 들어봐... http://https://youtu.be/Z4kH0IZVT-8 API문서 System.out.println( ); println() - ()와 함께 쓰이고, ()안에 값을 넣을 수 있으니 너는 메소드야 System - 이름 ..

클래스패스와 매우 밀접한 관계임 java_tutorials 디렉토리에서 eclipse의 project를 생성 우리가 계속해서 연습했던 패키지를거꾸로 보면 이고잉님 홈페이지의 도메인 주소야 PKG의 이름은 Class를 만드는 회사나 개인 이름으로 하면 중복될 경우가 적어서 도메인으로 작명하는 경우가 많음 현재 패키지가 아닌 다른 패키지에 포함된 클래스를 로드하는 것이 불가능 import를 쓰면 가능혀 → import org.opentutorials.javatutotrials.packages.example1.*; example1 패키지에 속해있는 모든 클래스를 로드한다(가져온다) * (wilde card) "모든 것" 이라는 뜻 ✔ 다른 패키지의 특정 클래스를 가져오고 싶으면? → import org.ope..

클래스가 위치한 경로를 우리가 지정하여, 자바가 필요로하는 클래스를 로드할 수 있는 방법을 지정 ClasspathDemo.java 파일 생성 class Item { } class ClasspathDemo { } cmd를 열고, 소스파일이 있는 경로 지정 cd 원하는경로 dir 소스파일 컴파일 하기 5. dir javac ClasspathDemo.java .class 파일이 2개가 생겼다! ➡ 한 소스파일에 class가 여러개일 경우, 한개의 클래스파일이 아니라 여러개의 클래스파일이 생겨 ClasspathDemo2.java 생성 class Item2{ public void print(){ System.out.println("Hello World"); } } class ClasspathDemo2{ publi..

Overloading 클래스의 메소드를 정의할 때, 같은 이름이지만 서로 다른 매개변수의 형식을 갖고있는 메소드 여러개를 정의할 수 있는 방법 오버로딩 = 같은 이름 but 다른 메소드 시그니처 setOprands 메소드가 포함된 예제에서 매개변수를 2개 주는 경우 + 3개 주는 경우의 프로그램을 만들고 싶으면, 상위 클래스 바로 아래에 세번째 변수를 선언하고, setOprands3 메소드를 생성 후 매개변수를 3개 넣어줌 그리고 sum()과 avg()메소드에 3번째 매개변수 값을 알맞게 넣어주면 돼 주의할 점은 avg는 세 값의 평균 = avg()메소드는 두 매개변수만 있으니 2로 나누면 되지만, 매개변수가 3개일 때는 3으로 나눠줘야하므로 avg3()메소드를 새로 선언한다. ✔ result setOp..
overriding 새롭게 정의한다 (상속과 밀접 관련) 우리가 이전에 배웠던 상속 개념은 부모 클래스가 갖고있는 기능에 자식 클래스의 기능을 더한 것이고, 오버라이딩은 부모 클래스 기능(즉 메소드)를 자식 클래스가 새롭게 재정의하여 사용하는거야 package org.opentutorials.javatutorials.overriding; class Calculator { int left, right; public Calculator(int left, int right) { this.left = left; this.right = right; } public void sum() { System.out.println(this.left + this.right); } public void avg() { Syste..