728x90
728x90
스프링부트 질문 상세 페이지 학습 중 발생한 오류(status=500)
트러블슈팅2022. 12. 7. 12:23스프링부트 질문 상세 페이지 학습 중 발생한 오류(status=500)

에러 더보기 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Wed Dec 07 11:50:25 KST 2022 There was an unexpected error (type=Internal Server Error, status=500). An error happened during template parsing (template: "class path resource [templates/question_list.html]") org.thymeleaf.exceptions.TemplateInputException: An error happened dur..

Java2022. 12. 4. 15:50인터페이스 (Interface)

인터페이스 모든 기능을 추상화로 정의만 하고 구현은 하지 않은 것 클래스와 인터페이스는 서로 상속받을 수 없다. 인터페이스끼리 상속가능 클래스는 다중 상속이 불가능하지만 인터페이스는 다중 구현이 가능하다 일반 메서드를 사용할 수 없다 필드는 상수 값만 가질 수 있다 implements 키워드를 사용하여 인터페이스를 '상속'이 아닌 '구현'한다. interface A {// 인터페이스 abstract void test1();// 추상 메서드 abstract void test2(); } interface B { void test3(); // 인터페이스에서 abstract 키워드를 생략할 수 있다. void test4(); } class C implements A , B { // 인터페이스는 다중 구현이 가능..

Java2022. 12. 4. 15:36추상화

추상화 공통된 특징을 묶어 하나의 클래스로 정의 (공통된 특징을 파악하는것이 중요) 상속으로 사용해야하지만 다중상속 불가능 객체 생성이 불가능 접근제어자, 리턴타입 사이에 abstract라는 키워드를 사용 자식 클래스들이 오버라이딩을 통해 메서드를 구현 abstract class Animal { // 추상 메서드 추상클래스 안에서 선언만 하고 {}대신 ;를 사용 abstract void howl(); } class Cat extends Animal { void howl() { System.out.println("야옹"); } } class Dog extends Animal { void howl() { System.out.println("멍멍"); } } public class Run { public st..

Java2022. 12. 4. 14:42캡슐화와 접근제어자, getter&setter

캡슐화 연관된 목적을 가지는 변수, 함수를 하나의 클래스로 묶어 외부에서 쉽게 접근하지 못하도록 은닉하는 것 외부에서 내부 정보에 접근, 변경을 불가능하도록 처리하고 해당 객체가 제공하는 필드와 메서드를 통해 접근이 가능 객체 정보 손상과 오용을 방지하고 데이터가 변경되어도 다른 객체에 영향을 주지 않는다 캡슐화는 접근제어자를 통해 이루어진다 접근제어자 public : 접근의 제한이 없음 protected: 동일한 패키지 내에 존재하거나 상속받은 클래스에서 접근 가능 default : 동일한 패키지 내에서만 접근 가능 / 아무런 명시가 없다면 디폴트값 private : 해당 클래스 내에서만 접근 가능 Getter & Setter 객체를 외부에서 읽고 변경하게 되면 객체의 무결성(변하지 않는 형태)이 깨질..

Java2022. 12. 4. 14:38상속과 오버라이딩 (Overriding)

오버라이딩 부모 클래스에서 상속받은 메서드를 자식 클래스에서 재정의하는 것 오버라이딩하고자 하는 메서드의 이름, 매개변수, 리턴 값이 모두 같아야 한다 필드는 오버라이딩이 불가능하다 상속 상위 클래스의 필드와 메서드를 물려받아 하위 클래스가 가져감 두 개 이상의 클래스를 직접적인 관계를 형성하여 불필요한 필드와 메서드의 선언을 최소화 자식 클래스에서 오버라이딩하는 메서드의 접근제어자는 부모 클래스보다 더 좁게 설정할 수 없다 class Parent { void display() { System.out.println("부모 클래스의 display() 메소드입니다."); } } class Child extends Parent { void display() { System.out.println("자식 클래스의..

Java2022. 12. 4. 14:20오버로딩 (Overloading)

오버로딩 같은 이름의 생성자나 메서드가 여러개 있더라도 파라미터의 타입이나 개수가 다르다면 사용 가능하다 같은 기능을 하는 메서드를 하나의 이름으로 사용 가능하다 메서드의 이름을 절약할 수 있다 // 변수명은 다르지만 변수 타입이 같기 때문에 불가능 int add(int a, int b) { return a+b; } int add(int x, int y) { return x+y; } // 변수 타입이 다르기 때문에 사용가능 int add(int a, int b) { return a+b; } int add(long a, long b) { return a+b; }

Java2022. 12. 4. 14:08생성자

생성자 클래스 명과 메서드 명이 동일 리턴타입을 정의하지 않음(void포함) 생성자를 선언하지 않으면 자동으로 디폴트 생성자를 생성한다 오버로딩이 가능하다 // 생성자 생략 public class Animal { String name; static int age = 3; Animal(String name){ this.setName(name); } void setName(String name) { this.name=name; } } // 생성자 입력 public class Animal { String name; static int age = 3; Animal(String name){ this.setName(name); } void setName(String name) { this.name=name; } }

Java2022. 12. 4. 12:47클래스와 메서드

클래스 객체를 정의(설계)하는 틀, 설계도라고 이해하면 쉬움 ex) 붕어빵 기계로 붕어빵을 만들 때, 붕어빵 기계는 클래스 붕어빵은 객체 public class Animal { public class Example{ Animal dog = new Animal(); } } Animal 클래스의 인스턴스 dog가 만들어졌다(Animal의 객체가 만들어졌다) 클래스에 의해 만들어진 객체 = 인스턴스 Animal cat = new Animal(); Animal dog = new Animal(); Animal horse = new Animal(); 무수히 많은 객체를 Animal 클래스로 만들었다 public class Animal { String name; // 객체변수 } public class Example..

728x90
728x90
image