일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 제네릭
- 무한
- Jenkins
- Short
- 콜렉션
- bootstrap
- wrapper
- 박싱
- 내장객체
- 클래스
- Java
- 컬렉션
- suvlet
- 루프
- Scanner
- 메소드
- boxing
- 싱글톤
- 스프링
- start.spring.io
- dependency
- 제너릭
- 언박싱
- https://start.spring.io
- 빌드
- 인텔리제이
- maven
- 싱글턴
- 자동형변환
- unboxing
- Today
- Total
목록K-DigitalTraining 강의 (333)
Developer Gonie
* 패키지란? 폴더의 개념이다. 관련있는 것들을 하나로 모아두고 관리할 때 패키지를 사용한다. 지금까지는 보통 src 폴더에 클래스를 생성해 왔는데, 이 경우엔 defualt 패키지(폴더)에 모두 그 클래스들이 저장되는 형식이었다. 그런데, 이와 다르게 비슷한 클래스들을 하나로 모아두고 관리하고 싶다면 패키지를 생성해 여기에 저장해두고 import 해서 접근하는 방식을 사용할 수도 있다. 다른 패키지의 클래스, 그리고 그 내부의 생성자, 멤버함수를 public으로 만들어야 하는 이유 * 다른 패키지에 존재하는 클래스, 그리고 그 내부의 메서드, 생성자를 defualt 접근제어자로 정의했다면, 현 클래스에서 접근이 불가능하므로 이들을 모두 public으로 변경해줘서 정상적으로 접근이 가능하도록 하자. 이 ..
public - 접근가능한 경우 -> 누구나 protected - 접근가능한 경우 -> 같은패키지 + 패키지가 다르더라도 자식클래스 default - 접근가능한 경우 -> 같은패키지 private - 접근가능한 경우 -> 전부 불가, 오직 getter, setter 로 내부의 멤버변수에 접근가능한 접근제어자
* 다른 클래스의 멤버변수를 사용하고 싶을 때 주로 상속을 이용하긴 하지만 포함관계 방식을 이용하기도 한다. 코드 아래는 Stu클래스가 Per 객체를 포함하고 있는 관계에 대한 예시이다. 이런경우 Per 객체의 멤버변수에 접근하고자 한다면 이중으로 타고 들어가야 접근이 가능하다. class Per{ String name; int age; Per(String name, int age){ this.name = name; this.age = age; } }//Per class Stu { int kor, eng, math; Per p; // Per 객체를 포함. Stu(String name, int age, int kor, int eng, int math){ p = new Per(name, age); this...
* super.멤버변수로 부모의 멤버변수에 접근할 때, 부모의 멤버변수가 private이 아닌 경우에만 접근이 가능하다. * 자식클래스에서 부모의 멤버함수를 오버라이딩 하더라도 부모의 멤버함수에 접근이 가능하듯이 자식클래스에서 같은 이름으로 멤버변수를 선언해도, 부모의 멤버변수에 접근이 가능하다. 즉 덮여 씌워지는게 아닌, 아래와 같이 둘다 메모리에 존재하는 상태가 되어 언제든 둘 다 접근이 가능함. 단, 자식클래스에 같은 이름으로 멤버변수가 선언되어 있지 않는 경우에는 this.변수를 하면 부모의 것이 불린다. => 코드1, 코드2를 비교 코드1 class Parent { int x = 10; void method() { System.out.println("P_x:" + x); } }// Parent ..
* 상속은 클래스 이름 오른쪽에 'extends' 를 넣어 상속받을 부모를 지정한다. 또한, 상속시 부모의 생성자는 상속을 받지 않고, 메서드와 멤버변수만 상속받음을 알아야 한다. * 이렇게 상속받은 메서드는 이름, 리턴타입, 인자의 타입 및 개수를 수정하지 않고 {}의 부분만 수정하여 동작을 바꿀 수 있는데, 이렇게 상속받은 함수를 재정의 하는 것을 오버라이딩이라고 한다. 아래에서 처럼 자식 클래스가 display() 메서드를 재정의 하지 않았다면 display() 호출시 부모한테 상속받은게 호출됨. * super() - 생성자 첫줄에 보이든 보이지 않든 무조건 존재하는 코드로 부모생성자를 호출하는 메서드이다. 생성자내에서 단 한번만 호출이 가능하며, 자식 생성자에서는 몸통의 코드 시작전 부모 생성자를..
* 생성자(Constructor)란? new 를 통해, 객체의 메모리가 생성된 직후에 자동으로 호출되는 메서드로 리턴타입이 없는 메서드인데, 메서드 이름이 클래스의 이름과 같다. 생성자를 따로 정의하지 않으면 컴파일러가 자동으로 매개변수없는, 아무일도 하지 않는 디폴트 생성자를 추가한다. class Member { private String id; private String passwd; Member(){ // 컴파일중에 자동으로(디폴트로) 추가될 생성자 } } 생성자는 매개변수의 개수 및 타입을 다르게 하여 오버로딩 가능하며, 인자를 어떻게 주어 객체를 만드냐에 따라 호출되는 생성자가 달라진다. 역할은 객체를 생성함과 동시에 그 객체가 가진 멤버변수를 초기화 하는 용도로 사용된다. 인자를 받는 생성자를..
원래 정수의 배열 만들던 방식 + 객체생성하는 방식을 고려하면 쉽게 기억할 수 있다. 코드 class SeasonBook { String title; String name; int price; SeasonBook() { this.title = "JSP"; this.name = "써니"; this.price = 1000; } SeasonBook(String title, int price) { this.title = title; this.name = "임효상"; this.price = price; } SeasonBook(String title, String name, int price) { this.title = title; this.name = name; this.price = price; } void s..
* 멤버변수 이름과 매개변수 이름이 같다면, 멤버변수는 객체의 멤버변수임을 this를 통해 명시해줘야 한다. 그렇지 않으면 우선순위에 의해서 두 이름 모두 같은 멤버변수로 인식해 null로 초기화 되어 있는 변수에 다시 자신을 넣는 것이라 또다시 null이 대입되어 아래와 같은 결과가 나오는 것이다. 내가 예상했던 결과가 나오지 않는 코드 class Product { private String name; void setName(String name) { name = name;// 문제가 되는 부분 } String getName() { return name; } } public class Ex05_13_setter_getter { public static void main(String[] args) { P..
* getter메서드 private 멤버변수에 넣은 값을 가지고 갈 수 있는 메서드를 이렇게 부름 * setter메서드 private 멤버변수에 값을 넣는 메서드를 이렇게 부름 * private멤버변수 일반 멤버변수는 객체를 통해서 값의 접근 및 수정이 가능했던 것과 달리, 클래스 내에서 private형으로 선언된 멤버변수는 객체를 통한 접근이 불가능하다. 따라서, 클래스 내부에 있는 멤버함수를 통해서만 값을 변경 및 가져올 수 있는데 이것을 getter, setter 메서드가 수행함. 주로 멤버변수는 private으로 선언된다. 코드 class Book { private String title; private int price; void setTitle(String s) {// setter 메서드 ti..
* 오버라이딩 상속받은 메서드를 { } 안의 내용만 수정하는 것을 말한다. 오버로딩과 다르게 매개변수 타입, 개수는 절대 수정하지 않음. * 클래스의 상속은 좀 더 뒷 부분에서 나오지만 이를 설명하기 위해 미리 상속 코드를 가져왔다. 코드 class Sports{ String name; int inwon; Sports(){ name = "야구"; inwon = 9; } Sports(String name, int inwon){ this.name = name; this.inwon = inwon; } void display() { System.out.println(name); System.out.println(inwon); } } class Baseball extends Sports{ //String name..
* 메서드 오버로딩 같은 이름으로 매개변수의 '개수' 혹은 매개변수의 '타입'을 다르게 하여 상황에 맞게 사용할 수 있도록 한 메서드 선언방식 우리가 흔히 알고있는 println메서드도 오버로딩되어 있기 때문에 대부분의 데이터 타입에 대해 출력이 가능한 것이다. 코드 public class Ex05_12_overloading { public static void main(String[] args) { System.out.println(plus(3, 5, 10)); System.out.println(plus(3, 5)); System.out.println(plus(0.1f,0.2F)); System.out.println(plus(0.1,0.2)); } static int plus(int x, int y, ..
링크 : https://docs.oracle.com/en/java/javase/11/docs/api/index.html Java API에서 'Math' 클래스 검색예시 위의 정보를 토대로 한, 대략적인 Math 클래스 구조 - 문서에서 Field는 해당 클래스의 멤버변수, Method는 해당 클래스의 멤버함수 class Math { //FIELD : 해당 클래스의 멤버변수 static double E; static double PI; //Method : 해당 클래스의 멤버함수 static double abs(double a) { ; } } 내장 'Math' 클래스 사용 예시코드 - max 함수는 Math 클래스 내에 static으로 정의되어 있기 때문에 클래스명으로 바로 호출 가능. public clas..