본문 바로가기

Programming/자바

(59)
생활코딩 자바 - abstract : 상속 클래스를 만들어, 그 클래스를 사용하도록 강제함 문법 상속 클래스 없을 때 오류 abstract class A{ public abstract int b(); public void d() { System.out.println("world"); } } public class AbstractDemo { public static void main(String[] args) { A obj = new A(); } } 상속 but 메소드 오버라이딩 x abstract class A{ public abstract int b(); => 메소드의 구체적 로직을 담는 본체 없고, 메소드에 대한 시그니처만 갖고 있는 추상적인 모습 => 반드시 메소드를 오버라이딩해야 함 public void d() { System.o..
생활코딩 자바 - 접근제어자 객체 안 메소드나 변수를 사용하는 권한에 차등을 주는 것 (클래스멤버의 접근제어자) 문법 class A { public String y() { //어디서든지 메소드 호출 가능 return "public void y()"; } private String z() { //클래스 밖에서 사용 불가능, 같은 클래스에서만 사용 가능 (ex. AccessDemo1) return "public void z()"; } public String x() { return z(); //x를 호출해 z를 다른 클래스에서 간접 호출은 가능 } } public class AccessDemo1 { public static void main(String[] args) { A a = new A(); System.out.println(a...
생활코딩 자바 - API API와 API 문서 보는 법 기본 패키지와 사용자 정의 로직 System.out.println(1); => System : 클래스(앞 문자 대문자화), out : 클래스의 멤버변수/필드/객체, println : 메소드 => out => System을 인스턴스화 하지 않았지만 접근 가능하므로 static 이때 System 클래스는 자바가 기본적으로 import 하는 패키지에 속함 (명시하자면 imprt java.lang.*) API : 자바 시스템 제어 위해 자바에서 제공하는 명령어 API 문서 (docs.oracle.com/javase/ => API Documentation) : API 목록과 사용법이 체계적으로 정리된 문서 UI(User Interface)와 API(Application Program..
생활코딩 자바 - 패키지 ?? 패키지의 개념 : 하나의 클래스 안에서 같은 이름의 클래스들을 이용하기 위한 방법 이름의 충돌 방지함 디렉토리와 비슷 (a.txt가 두개 공존하려면 b폴더/c폴더에 각각 같은 이름으로 존재할 수 있음) 패키지 사용 package org.opentutorials.javatutorials.packages.example2; public class B { public static void main(String[] args) { A a = new A(); => 오류 } } => example1 패키지에 A, B 클래스 / example2 패키지에 B, C 클래스 => 같은 패키지에 있는 클래스만 로드 가능하므로 A는 따로 import해야 함 (import org.opentutorials.javatutorials...
생활코딩 자바 - 클래스패스 ?? 클래스가 위치하는 경로를 지정하는 것 컴파일과 클래스 명령프롬프트 창 이용 경로 ~~~ javac ClasspathDemo.java => java를 컴파일(컴퓨터가 이해할 수 있는 언어로 변경)하면서 파일 안 item, classpathdemo 클래스가 item.class, classpathdemo.class 파일로 각각 생성됨 클래스와 경로의 관계 ClasspathDemo2.java class Item2{ public void print() { System.out.println("hello world"); } } class ClasspathDemo2 { public static void main (String[] args) { Item2 i1 = new Item2(); i1.print(); } } =>..
생활코딩 자바 - overloading overloading 같은 이름이지만 서로 다른 매개변수의 형식을 갖고 있는 메소드를 여러 개 정의 class Calculator{ int left, right; int third = 0; public void setOprands(int left, int right) { System.out.println("setOprands(int left, int right)"); this.left = left; this.right = right;} public void setOprands(int left, int right, int third) { System.out.println("setOprands(int left, int right, int third)"); this.left = left; this.right ..
생활코딩 자바 - overriding ?? : 부모클래스의 메소드를 상속받으면서 그 메소드를 그대로 쓰지 않고 재정의하여 기능 변경하는 것 =덮어쓰기 class Calculator { int left, right; public void setOprands(int left, int right) { this.left = left; this.right = right; } public void sum() { System.out.println(this.left + this.right); } public void avg() { System.out.println((this.left + this.right)/2); } } class SubCalculator extends Calculator { public void sum() { System.out.printl..
생활코딩 자바 - 상속과 생성자 ?? public class ConstructorDemo { => 생성자 없음 -> 자바가 자동으로 기본 생성자(클래스의 이름과 같고 매개변수 없는 메소드) 만들어줌 public static void main(String[] args) { ConstructorDemo c = new ConstructorDemo(); } } => ConstructorDemo 객체 생성할 때 자동으로 생성자를 만들어줘서 에러 X public class ConstructorDemo { public ConstructorDemo(int para1) {} => 생성자에 매개변수 있음-> 자바가 자동으로 기본 생성자를 만들어주지 않음 public static void main(String[] args) { ConstructorDemo c ..
생활코딩 자바 - 상속 상속의 개념 - 객체의 필드(변수)와 메소드를 다른 객체가 물려받는 기능 - 새로운 변수/메소드 추가 또는 변경 가능 - 기존 객체 유지하면서 기능 추가 - 부모 객체 - 자식 객체 /상위 클래스 - 하위 클래스 / 기초 클래스 - 유도 클래스 class Calculator { int left, right; public void setOprands(int left, int right) { this.left = left; this.right = right; } public void sum() { System.out.println(this.left + this.right); } public void avg() { System.out.println((this.left + this.right)/2); } } c..
생활코딩 자바 - 생성자 Calculator c1 = new Calculator(); c1.setOprands(10,20); => 실수로 해당 행 빼면 객체 실행 X (절차가 복잡해 실수 일으킬 수 있음) c1.sum(); c1.avg(); =>생성자 사용=> Calculator c1 = new Calculator(10,20); c1.sum(); c1.avg(); 생성자(초기화 기능) : 별도 생성자 메소드 생성-> 숙지, 암기해야 하는 절차를 넣어둬 필수사항 놓치지 않게 함 class Calculator { int left, right; public Calculator(int left, int right) { => 클래스와 똑같은 이름의 메소드 => 생성자(Constructor) : 1순위로 실행(=초기화)되는 메소드 this..