오버로딩은 메소드의 이름은 같고 매개변수의 갯수나 타입이 다른 함수를 정의하는 것을 의미하며, 리턴값만 다르게 갖는 오버로딩은 불가능합니다.
오버라이딩은 부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의 하는 것을 의미합니다.
상속받은 메소드를 그대로 사용할 수 있고 또는 자식 클래스에서 상황에 맞게 변경해서 사용할 수 있습니다.
이 경우 오버라이딩 하고자 하는 메소드명, 매개변수, 리턴값이 모두 같아야 합니다.
RDB(Relational Database)는 관계형 데이터 모델에 기초를 둔 베이터베이스이다.
관계형 데이터 모델은 모든 데이터를 2차원 테이블로 표현하는데, 테이블은 이름을 가지고 있고 행과 열 그리고 거기에 대응하는 값을 가진다.
RDB는 서로 다른 테이블이 관계를 맺고 모여있는 집합체로 이해할 수 있다.
NoSQL은 비관계형 데이터베이스를 말한다.
관계형 데이터 모델을 지양하며 대량의 분산된 데이터를 저장하고 조회하는데 특화되었으며 스키마 없이 사용 가능하거나 느슨한 스키마를 제공하는 저장소를 말한다.
관계형 데이터베이스(RDB)는 사전에 엄격하게 정의된 DB schema를 요구하는 table 기반 데이터를 구조를 갖는데 반해, 비관계형 데이터베이스(NoSQL)는 table 형식이 아닌 비정형 데이터를 저장할 수 있도록 지원한다. RDB는 엄격한 스키마로 인해 데이터 중복이 없기 때문에 데이터 update가 많을 때 유리하고, NoSQL은 데이터 중복으로 인해 update 시 모든 컬렉션에서 수정이 필요하기 때문에 update가 적고 조회가 많을 때 유리하다.
스키마는 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것이다.
스키마는 데이터베이스를 구성하는 데이터 개체(Entity), 개체의 특성을 나타내는 속성(Attribute), 개체 사이에 존재하는 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관하여 기술한다.
정적 멤버는 클래스가 메모리에 올라갈 때 자동적으로 생성되기 때문에 객체 인스턴스를 따로 생성하지 않아도 호출하여 사용할 수 있다.
따라서 static은 유틸리티 함수를 만드는데 사용하거나 변하지 않는 자주 사용하는 값, 설정 정보등을 정적 메모리에 올려 객체 생성 비용을 줄일 수 있다.
그러나 메모리에 올라가는 것이기 때문에 남용하면 메모리를 낭비할 수 있다.