본문 바로가기

language

(25)
[java] local variables , instance variables, class variables (지역변수, 인스턴스변수, 클래스변수) method 내부에서 선언된 변수는 로컬변수 class 내부에서 선언된 변수는 클래스변수와, 인스턴스변수 static이 붙으면 클래스변수 안 붙으면 인스턴스 변수 로컬변수는 메소드가 호출될때 마다 스택에 생성되고 인스턴스 변수는 객체가 생성될때 마다 스택에 생성 클래스 변수는 클래스가 메모리에 올라간 순간 스택영역에 계속있는다
[java] default method 디폴트 메소드 (feat. abstract class) default method interface에서 내용이 있는 메소드 인터페이스는 원래 추상메소드 100퍼센트다 하지만 default 를 붙여줌으로 내용을 추가할수있다. 등장배경 상황 : 한 오픈소스의 인터페이스가 많이 사용되고있다. 해당 인터페이스에 메소드를 추가하고싶어졌다. 인터페이스 특성상 메소드가 추가되면 이 인터페이스를 구현하고 있는 모든 클래스에서는 해당 메소드를 구현해주어야한다. -> 추가하지않으면 오류가 발생 해결 : 꼭 구현하지 않아도 되는 메소드를 넣자 - > default method 대신 디폴트 메소드는 추상이 아닌 무조건 내용이 있어야한다. 생각할점 그러면 abstract class와 무엇이 다른가? 여러 메소드들 중에 골라서 구현하는 것이 꼭 추상클래스같다.. 클래스와 결정적으로 ..
[java] abstract 추상화 abstract class를 쓰는 경우는 두가지다 1. new를 막으려고 ( = 객체 생성 방지) (e.g.) 도형이라는 클래스가 있다고 하고 하위에 삼각형, 사각형, 오각형이 있다. 삼각형, 사각형, 오각형 객체를 생성해서쓰는데 도형이라는 객체를 생성할 필요 없기때문에 abstract로 생성하지못하게 방지하는것이다. 2. abstract 메소드가 있어서 한 클래스에 abstract 메소드가 있으면 해당 클래스도 absract여야 한다!!! 이거는 idle에서 빨간 밑줄이 쳐지기 때문에 금방 알수있을 것이다. --> abstract 메소드가 있는 클래스를 상속받은 하위 클래스에서는 해당 메소드에 대한 구현이 있어야한다. (e.g.) 상위 클래스 도형에 추상메소드인 abstract lineNum(); 쓰니..
[java] 상속에서 조심해야 하는 점 상속이 무엇인지는 다른 기술 블로그에도 많기 때문에 간단한건 넘어가고 설명을 한다. 우리는 객체지향프로그래밍을 하고있기때문에 선언을 할때 상위 = new 하위(); 이런 것의 장점을 알아야한다. . 사용하는 ArrayList도 선언할때 다음과 같은 형태로 작성하는 것이 좋다. List list1 = new ArrayList(); List list2 = new LinkedList(); 여기서 조심해야할 점 !!! 다음을 예로 들어보자 Animal 이라는 상위 클래스가 있고 Wolf 와 dog라는 하위 클래스가 있다. 각각 클래스는 Animal을 상속받는다. class Animal{ void bark(){ System.out.println("짖다!"); } } class Wolf extends Animal{..
[java]static의 사용이유 static은 자바 main 문이 있는곳이라면 아주 쉽게 봤다 처음배울때는 그냥 기계적으로 계속썼다 public class Main public static void main ... static을 왜쓸까? 두가지 이유가있다. 자주쓰기위해, 어쩔수없이 1. 자주쓰는것, 공용으로 쓰는것을 여러곳에서 사용하기위해 ( 전역변수느낌?) static 붙이면 new(생성자) 없이 사용이 가능하다. 이말이 무슨소린지 몰라도 아래 코드를 보면 이해가간다. (int)(math.random()*10); Integer.parseInt(asd); 우리가 자주쓰는 모습이다. Math asd = new Math() 이런식으로 math에 대한 객체를 생성하지 않고 가져다 쓴다. 만약 한다면 Math asd = new Math() a..
[jsp] DB에 null값 넘어가는 오류 input에서 값을 보내졌다고 성공하는데 막상 테이블을보면 null값만 나온다. 이 오류가 가장 많이 나오는 이유는 input 태그에 name 파라미터의 값과 getParameter 안의 파라미터값을 다르게 썼을때이다. input에서 name을 phone으로 썼는데 String phone = request.getParameter("Phone"); getParameter에서 Phone으로 써서 오류가 난다. 문자열에서는 대소문자도 확실히 구분해서 쓰도록하자 근데 나는 둘다 같게 썼는데도 오류가 났다. 이유는 entype을 multipart/form-data로 작성했기 때문이다. 이 방식은 요소가 파일이나 이미지를 서버로 전송할 때 주로 사용한다. 나는 텍스트만을 전송하고 있는데 저렇게 쓰니 오류가 발생했다..
getter와 setter getter와 setter를 왜 쓰는걸까? 이유는 외부에서 제한없이 접근하는 것을 방지하는 것이다. (캡슐화, 객체무결성...) 정확히 말하자면 private 접근제한자로 아무나 접근을 못하게하고 getter와 setter로 접근하는 것! global(전역 변수)를 좋아하지 않는 이유와 마찬가지이다. 어디서든 접근 가능하다는 것 = 해당 변수를 어디서든 바꿀수있다는것. = 신뢰성을 하락한다는 것 setter는 외부의 접근을 최소화하여 값을 함부로 못바꾸게해 그러면 getter는 굳이 접근을 막을 필요가 있을까? 단순히 값을 읽기만 하는거잖아? 이거에 대한 답변은 일부만 보여주려고 라고 할수 있을것이다. 가령 다음과 같은 class가 있다고 하자 이름과 번호만 알고싶어도 아래와 같이 다 뜨게된다 많으면 많..
css 상단 여백 자꾸만 상단 여백이 없어지지않았다 html, body{ margin: 0; padding: 0; } 인터넷에서 이거만 수십번을 봤는데도 적용이 안되었고 height: 100% 를주고 header, section, footer를 합해서 100% 되게끔 height를 주고 해도 상단의 여백은 지워지지 않았다. 대신 모든 html 요소 선택자인 * 로 해결! *{ margin: 0; padding: 0; } 이렇게하니까 상단까지 없어졌습니다! 해결!