전체 글 317

오버라이딩 VS 오버로딩

오버라이딩 - 부모Class에서 정의한 메서드를 자식 Class에서 변경하는 것 (메소드 재정의) ex) 상속관계에 있는 부모클래스 A와 자식클래스 B사이에서 부모클래스 A가 C메서드를 가질때 B는 자연스럽게 A클래스의 메서드 C를 상속받게 된다. 하지만 이는 자식클래스 B사이에서 원하는 기능이 아닐 때 오버라이딩을 통해 자식클래스 B에서 한번더 메소드 C를 정의하여 자식클래스 B만에서의 메서드 C를 가지는것 (= 덮어쓰기) 사용 시 조건 - 부모클래스의 메서드랑 메서드이름이 같던가 매개변수, 리턴타입이 같아야 함 - 자식클래스의 접근 지시 제어자는 부모클래스의 것보다 넓거나 같아야함 - 예외는 부모의 클래스의 메소드 보다 많이 선언 불가능 * Static 메서드는 오버라이딩 허용 X -> 클래스에 속하..

인터페이스란?

인터페이스(interface)란? - 모든 메서드가 구현부가 없는 추상메서드와 상수로만 이루어진 클래스 - 모든 멤버 변수는 public static final, 모든 메서드는 public abstract 이어야 하며 이를 생략 가능 (컴파일러에 의해 컴파일 시 자동으로 추가) - 개발시간 단축 - 클래스간 결합도 낮춤 - 다중상속이 가능 - 협업시 객체의 내부 구조를 모르더라도 인터페이스의 메서드명만알면 사용가능하므로 협업에 유리 인터페이스를 자식으로 가질 경우 interface 자식인터페이스 extends 부모인터페이스 {} 클래스를 자식으로 가질경우 class 자식클래스 implements 부모인터페이스 {} https://sungwoon.tistory.com/59

추상클래스란?

추상클래스 (abstract Calss) 란? - 클래스 안에 추상메소드가 하나라도 존재하는 클래스 의미 - 스스로 객체 생성 불가능 - 추상클래스로부터 상속받는 실체클래스가 있어야함 - 실체클래스는 추상메소드를 오버라이딩하여 구현해야한다. - 뼈대가 만들어져있어 그안에 내용만 구현하면 되니 시간절약 많이되고 효율적으로 사용가능 - 주로 팀작업할때 각자 코딩을 좀더 편하게 합치기 위하여 사용 https://ucong-9796.tistory.com/26?category=815682

Call By Value vs Call By Reference

Call By Value - 인자로 받은 값을 복사하여 처리하는 방식 - Call By Value에 의해 넘어온 값을 증가시켜도 원래의 값이 보존 - 값을 복사하여 넘기기 때문에 메모리 사용량 늘어남 Call By Reference - 인자로 받은 값의 주소를 참조하여 직접 값에 영향을 주는 방식 - 값을 복사하지 않고 직접 참조하기 때문에 속도가 빠름 - 원래의 값에 영향을 주는 리스크 존재

Primitive type vs Reference type

JAVA의 변수 데이터 타입 기본형(Primitive) - stack 메모리 영역에 실제 값을 저장하는 데이터 타입 - 기본값이 있어 null 이 존재하지 않음 ex ) byte, short, int, long, float, double, char, boolean - call by value 호출 방식 사용 참조형(Reference) - 기본형을 제외한 모든 타입 - 메모리 상에 객체의 주소를 저장하는 것 - 기본값은 아무런 참조 정보가 없으므로 null을 리턴 ex ) class, interface, array, Enum Type - 실제 값은 heap에 저장되고 stack에는 메모리 주소만 저장 - call by reference 호출 방식 * String - char의 Array = Referenc..

C++ vs Java

C++ JAVA 설계 목표 속도, C와의 하위 호환성에 집중 보안과 빠른 이식성에 집중 클래스 C언어의 상위 호환으로 절차지향이 섞임 기본단위 Class, 거의 완전한 OOP 컴파일과 런타임 각 운영체제에 맞는 기계어로 컴파일 가상머신 바이트 코드로 컴파일 하며, 이를 실행 시키기 위해서는 가상머신이 필요 이식성, 보안성 상대적으로 낮음 상대적으로 높음 바인딩 정적 바인딩 ( 컴파일 시, 어떤 함수를 호출할 지 결정) - 프로그램 실행 중에는 불필요한 오버헤드 없음 - virtual 키워드 제공 동적 바인딩 ( 런타임 중, 실행코드가 결정 ) - 실행 시간에 그 인스턴스가 실제로 담고 있는 객체의 종류를 판단하여 메서드 호출 - 별도의 데이터 관리해야 하고 부가적인 오버헤드 붙음 문법 차이 - 동적으로 ..

C vs JAVA

C JAVA 절차지향 언어 객체지향 언어 유지보수 어려움, 꼬이게 되면 순차적으로 수정 유지보수 용이, 해당 객체만 찾아 수정 실행/처리 속도 빠름 상대적으로 느린 속도 임베디드 또는 운영체제처럼 속도나 용량 등에서 최적화가 필요한 곳에서 주로 사용 웹 사이트나 운영체제와 상관없이 실행되어야 하는 응용SW, 안드로이드 앱 등에서 사용 안정성 & 확장성이 상대적으로 낮음 안정성 & 확장성이 상대적으로 높음 메모리를 직접 조절하여 메모리 낭비가 적음 각각의 클래스로 인해 메모리 낭비가 높음

JAVA의 장단점

JAVA란? 장점 단점 - 자바 가상 머신위에서 동작하기 때문에 OS 에 독립적 - 인터프린터 언어 - 메모리를 자동으로 관리 ( 사용하지 않는 객체 자동으로 메모리에서 체크하고 반환 ) - 이식성이 높음 (JVM에서 작동하므로 운영체제의 종류에 상관없이 작동) - 멀티 스레드 구현이 쉬움 - 동적 로딩을 지원 ( 프로그램 실행시 모든 클래스 로딩 x, 필요한 시점에서 클래스 로딩해 사용) - 분산환경을 지원 ( TIC/IP 라이브러리 기본적 포함, HTTP 프로토콜 지원) - 오픈소스 라이브러리 풍부 - 실행을 위해 자바 가상 머신을 거쳐야 하므로, 다른 언어에 비해 실행 속도가 느림 - 예외 처리가 잘 되어 있지만, 개발자가 일일이 처리를 지정해 줘야 한다는 불편함 - 다른 언어에 비해 작성해야 하는..