java
-
[java] 추상클래스java 2023. 1. 17. 23:45
추상클래스는 인터페이스의 역할도 하면서 클래스의 기능도 가지고있는 클래스이다. 추상클래스와 인터페이스 비교 interface Predator{ //상수 int LEG_COUNT = 4; //추상 메소드 String getFood(); //디폴트 메소드 default void printFood(){ System.out.printf(getFood()); } //스태틱메소드 static int speed(){ return LEG_COUNT *30; } } abstract class Predator extends Animal{ //Animal클래스의 기능을 유지하기 위해 상속함 //상수 static int LEG_COUNT =4; //메소드 abstract String getFood(); //실제메소드 void..
-
[java] 인터페이스의 다형성과 다중상속java 2023. 1. 17. 23:19
객체 지향 프로그래밍 특징 중에는 다형성(polymorphoism)이있다. instace of : 어떤 객체가 특정 클래스의 객체인지 조사할때 사용된다. animal instanceof Tiger = "animal 객체는 Tigger클래스로 만들어진 객체인가?" interface Predator{ String getFood(); // 추상 메소드 } class Animal{ String name; void setName(String name) { this.name = name; } } class Tiger extends Animal implements Predator{ public String getFood(){//추상메소드가 재정의된모습 return "apple"; } } class Lion exten..
-
[java] 인터페이스java 2023. 1. 17. 22:40
인터페이스는 개발코드와 객체가 서로 통신하는 접점 역할을 한다. 개발 코드가 인터페이스의 추상 메소드를 호출하면, 인터페이스의 추상 메소드는 각 객체의 재정의된 실체메소드를 호출한다. 이때 각 객체는 인터페이스의 구현객체라고 하고, 구현 객체를 생성하는 클래스를 구현 클래스라고 한다. 이를 통해 개발 코드는 각 객체들의 내부 구조를 알 필요 없고, 인터페이스의 메소드만 알고 있으면 되어 다형성이 실현된다. 보통 중요 클래스를 작성하는 입장이라면 , 클래스의 구현체와 상관없이 인터페이스를 기준으로 중요 클래스를 작성해야한다. 인터페이스는 단독파일로 저장하는것이 일반적인 방법이다. 인터페이스를 통해, 개발코드를 수정하지 않고 사용하는 객체를 변경할 수 있다. 인터페이스는 여러개의 객체들과 사용이 가능하므로 ..
-
[java] 생성자(Constructor)java 2023. 1. 17. 11:49
생성자는 필드(객체변수)에 값이 설정되지 않아도 객체가 생성되게 만들 수 있다. 생성자의 규칙 1. 클래스명과 메소드명이 동일하다. 2. 리턴타입을 정의하지않는다.(void도 사용하지않는다.) 3. 생성자는 객체가 생성될떄 호출된다.(new키워드가 사용될때 호출) class Animal{ String name; void setName(String name) { this.name = name; } } class Dog extends Animal{ void sleep(){ System.out.println(this.name + "zzz"); } } class HouseDog extends Dog{ HouseDog(String name){ //생성자: 클래스명과 이름이 동일 리턴타입x this.setName(..
-
[java] 상속java 2023. 1. 16. 23:52
상속이란 ? : 자식클래스가 부모클래스의 기능을 그대로 물려받는 것. 클래스 상속을 위해서는 extends 키워드를 사용한다. class Animal{ String name; void setName(String name) { this.name = name; } } class Dog extends Animal{ //Animal클래스를 상속하는 Dog클래스 } public class Sample { public static void main(String[] args) { Dog dog = new Dog(); dog.setName("poppy"); //dog클래스는 name객체변수와 setName메소드가 없지만, Animal클래스를 상속했기때문에 사용이가능 System.out.println(dog.name);..
-
[java] call by value vs call by referencejava 2023. 1. 16. 18:10
메소드에 값(primitive type)을 전달하는것 과 객체(reference type)을 전달하는 것에는 큰차이가 있다. call by value : 메소드가 값을 받은 경우 value는 메소드 내부에서만 쓰인다. 즉 객체 내부 속성값이 copy된 복사본이다. 이는 본래객체의 속성값을 변경시키지 못함 변경시키고자한다면 return 값 을 해주어야함. class Updator{ void update(int count){ count++; //값은 매개변수 내부에서만 쓰인다. } } class Counter{ int count =0; } public class Sample { public static void main(String[] args) { Counter myCounter = new Counter(..
-
[java] 메소드java 2023. 1. 16. 17:51
메소드 - 클래스 내의 함수이다. 입력을 통해 결과물을 내놓는다. 여러번 반복할 일이 있을때 이를 수월하게 하기 위해 쓰인다. 메소드의 기본구조 리턴자료형 메소드명(입력자료형1 매개변수1, 입력자료형2 매개변수2, ...){ return 리턴값; } class Sample{ int sum(int a, int b) { //sum메소드의 리턴자료형은 int이다. return a+b; // return은 메소드의 결과값을 돌려주는 명령어이다. } } public class HelloWorld { public static void main(String[] args) { int a = 3; int b = 4; Sample sample = new Sample(); int c = sample.sum(a, b); //..
-
[java] 클래스java 2023. 1. 16. 17:08
5-1 객체지향 프로그래밍 객체지향 프로그래밍이 필요한이유는 ? 예를 들어보자, 우리가 만약 계산기 2대가 필요하다면 계산기 클래스 2개를 만들어야 한다. 그런데 계산기가 3대 혹은100대가 필요하다면 일일히 계산기를 만들기란 쉽지않다. 그렇기때문에 같은 기능을 갖고있는 계산기 클래스를 하나만 만들고 객체를 여러개생성하면, 클래스 하나로 100대의 계산기를 구현할 수 있는 것이다. 5-2 클래스 클래스는 파일에 단독으로 작성하는 것이 일반적인 방법이다. 클래스는 객체를 만드는 기능을 갖고있다. new는 객체를 생성할때 사용하는 키워드이다. 어떤 클래스를 통해 만들어진 객체를 인스턴스라고 한다. 클래스의 예시) Animal - 클래스로 무수히 많은 동물객체 cat,dog등을 만들 수 있다. class An..