본문 바로가기

웹 프로그래밍

(40)
[JAVA] 상속(Extends) 상속 부모 클래스의 정보를 자식클래스가 그대로 상속받는 것을 말한다. 따라서 자식은 부모클래스의 정보를 상속받았으므로 자식클래스에서 부모클래스의 메소드를 호출하는 것이 가능하다는 것이다. (이외로 변수 등과 같은 모든 정보를 그대로 받는다. 이는 코드의 생산성을 증가시킨다.) 예제 class Super{ int x = 90; void superMethod(){ System.out.println("superMethod"); } } class Sub extends Super { int y = 10; void subMethod(){ System.out.println("subMethod"); } } class SubSub extends Sub { int z = 30; void subSubMethod(){ Sys..
[JAVA] 회원관리 시스템 / 응용 코드 Meber.java package test; public class Member { private String name; private int height; private int weight; private String nation; public Member(String name, int height, int weight, String nation){ this.name = name; this.height = height; this.weight = weight; this.nation = nation; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public int getHeight..
[JAVA] this() 생성자(코드의 간결함을 위한!) this() 생성자 자기 자신의 다른 클래스를 호출하기 위한 생성자이다. 쓰이는 이유는 코드의 간결함 떄문, 자세한건 아래 예제를 통해 이해하자. 예제 package test; import java.util.Scanner; class House{ int price; String dong; int size; String kind; public House(){ this(100,32,"상계동","아파트"); } public House(int price){ this(price, 32, "상계동", "아파트"); } public House(int price, int size){ this(price, size, "상계동", "아파트"); } public House(int price, int size, String ..
[JAVA] new 생성자 생성자 tc라는 객체를 생성할 때 new연산자 다음의 TestClass()를 생성자라 한다. TestClass tc = new TestClass(); 지금까지 객체를 생성할 때 아무렇지도 않게 이렇게 객체(인스턴스)를 생성했다. 하지만 new연산자 뒤의 생성자는 어디서 정의 한 것일까? 이는 컴파일러에서 정의된 생성자가 없다면 자동으로 정의해준다. 빈생성자만을 정의 해준다. 하지만 이렇게 빈 생성자를 선언해서 객체를 생성한다면 멤버변수를 따로 초기화 해줘야한다는 불편함이 존재 했었다. 그래서 그러한 문제점을 제거하기 위해 직접 생성자를 선언하면 좋다. 주의할 점 정의된 생성자가 있을 경우 컴파일러는 빈 생성자를 따로 정의해 주지 않는다. 이렇게 떄문에 생성자를 선언하고 필요에 따라 빈 생성자도 따로 선언..
[JAVA] 정적 메소드와 인스턴스 메소드(Static Method and Instance Method) 정적 메소드(Static Method)와 인스턴스 메소드(Instance Method) 정적 메소드와 인스턴스 메소드의 가장 큰 차이점이라면 저장되는 공간이 다르다. 이전의 정적변수(Static Variable)이 저장되는 공간이 Class Area라고 했다. 그래서 정적 변수의 경우 별다른 객체(인스턴스) 생성 없이 Class.정적변수명 으로 바로 접근이 가능했다. 이와 같이 정적 메소드도 별다른 인스턴스 생성 없이 바로 호출이 가능하다. 주의할점 정적 메소드 내에서는 인스턴스 변수(Instance Variable)나 메소드(Method)를 사용할 수 없다. 물론 지역변수(Local Variable)은 사용이 가능하지만 인스턴스 변수나 메소드를 왜 사용할 수 없냐면 정적 메소드의 초기화 시점은 인스턴스..
[JAVA] 메소드 오버로딩(Method Overloading) 메소드 오버로딩이란? 한 클래스 내에서 같은 이름의 메소드를 여러개 정의할 수 있는 기능을 의미한다. 조건 1. 파라미터의 타입이나 개수가 달라야한다. 2. 파라미터의 이름은 오버로딩 성립에 영향을 주지 않는다. (하지만 파라미터의 타입이 같다면 성립X) 3. 리턴 타입은 오버로딩 성립에 영향을 주지 않는다. (파라미터의 타입이 같다면 리턴타입이 달라도 성립X) 예제 package test; import java.util.Scanner; class Boiler{ String maker; int temp; String color; void tempUp(){ temp++; } void tempUp(int amount){ temp += amount; } } public class test { public st..
[JAVA] 가변 인자 메소드(Variable Method) 주의할 점, JDK 1.4버전 이하에서는 안되며 가변 인자 메소드는 1.5버전 이상에서 호환이 됩니다. 선언 RETURN_TYPE FUNCTION_NAME(String ... infos){ return RETURN_TYPE; } 예제 package test; import java.util.Scanner; public class test { void printlnInfo(String ... infos){ if(infos.length != 0){ for(int i = 0; i < infos.length; i++){ System.out.println(infos[i]); } } else { System.out.println("인자가 없네요?"); } } public static void main(String[]..
[JAVA] 메서드와 변수 응용 예제 package test; import java.util.Scanner; class Args { int x; void add(int x){ x = x + 50; } void add(Args arg){ arg.x = arg.x + 40; } void addNew(Args arg){ arg = new Args(); } void add(int[] arr){ arr[0]++; } } public class test { static int staticVar2 = 20; public static void main(String[] args) throws Exception { Args arg = new Args(); arg.x = 100; int[] arr = new int[1]; arg.add(arg.x); Sy..