일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 다이나믹프로그래밍
- 그리드
- 그리드 알고리즘
- Spring
- 이분탐색
- AWS
- 순열
- GIT
- BFS
- 다이나믹 프로그래밍
- SQL
- CI/CD
- 자료구조
- 분할정복
- 그래프
- dfs
- HTTP
- 백준
- 스프링
- 컴퓨터 네트워크
- 역방향 반복자
- 트리
- 자바
- 재귀
- 도커
- 알고리즘
- 분할 정복
- github action
- 브루트포스
- TCP
- Today
- Total
코딩성장스토리
자바:Java(3) 본문
1.생성자
생성자를 선언
생성자는 리턴형을 가지고 있지 않고 프로그래머가 생성자를 만들지 않으면 컴파일할 때 매개변수가 없는 생성자가 자동으로 만들어집니다.
매개변수가 없는 생성자를 기본 생성자라고 한다.
ex)car c1=new car(); //생성자를 호출하고 있다.
public class 클래스명{
자료형 필드명;
public 클래스명(매개변수 목록){//생성자 블록
}
}
만약 생성자를 매개변수 있이 만들어보자
package javaStudy;
public class car{
string name;
int number;
public car(String n){
name=n;
}
}
public class carexam2{
public static void main(String[] args){
// car c1=new car();
car c2=new car("소방차");
}
}
2.this
this 키워드는 내 구성 요소라는 의미를 지니고 있다.
public class car{
string name;
int number;
public car(String name){
this.name=name; //this 내 필드내의 name의 name을 넣어달라는 의미
}
}
3.메서드 오버로딩
똑같은 이름으로 메서드 세 개를 정의가능 매개변수는 달라야함
package javastudy;
public class MyClass2{
public int plus (int x,int y){
return x+y;
}
public int plus (int x,int y,int z){
returb x+y+z;
}
public String plus (String x,String y){
return x+y;
}
}
3.생성자 오버로딩과 this
package javaStudy;
public class Car{
String name;
int number;
public Car(String name){
this.name=name;
}
public car(){
}
public Car(String name, int number){
this.name=name;
this.number=number;
}
}
4.패키지
다른 패키지에 들어 있는 클래스를 사용하려면 import란 키워드를 사용해야 합니다. import란 다른 패키지에 들어있는 클래스를 사용하기 위한 키워드다
package javaStudy;
import com.eightcruz.javastudy.Hello; //co,eightcruz.javastudy 패키지 안에 있는 hello 클래스를 쓰겠다고 선언
public class HelloExam{
public static void main(String[] args){
Hello hello = new Hello();
}
}
5,상속
자식이 부모에게 상복받은 것을 사용할 수 있듯이 여기서의 상속 개념도 동일하다.
하지만 부모 클래스는 자식 클래스의 메서드를 사용할 수 없다.
package javaStudy;
public class BusExam {
public static void main(String[] args) {
Bus bus=new Bus();
bus.run();
bus.ppangppang();
Car car=new Car();
car.run();
car.ppangppang();//실행 안됨 ppangppang함수는 bus클래스 즉 자식 클래스라 사용불가능
}
}
package javaStudy;
public class Bus extends car { //Bus클래스는 car클래스를 상속한다
public void ppangppang(){
System.out.println("빵빵");
}
package javaStudy;
public class car {
public void run() {
System.out.print("성공");
}
}
6.접근 제한자
public: 모든 접근을 허용
protected: 같은 패키지 &상속을 받은 다른 패키지의 접근을 허용
private: 자기 자신의 접근만 허용
default:자기 자신&자기 자신과 같은 패키지 안에서 접근을 허용
접근제한자의 접근범위
public>protected>default>private
package javastudy;
public class accessobj{
public int p=3;
protected int p2=4;
private int i=1;
int k=2;
}
ex1)
package javastudy;
public class accessobjexam{
public static void main(String[] args){
accessobj obj=new accessobj();
System.out.println(obj.p);
System.out.println(obj.p2);
System.out.println(obj.i);//컴파일 오류가 발생
System.out.println(obj.k);
}
}
ex2)
package 다른 패키지;
public class accessobjexam{
public static void main(String[] args){
accessobj obj=new accessobj();
System.out.println(obj.p);
System.out.println(obj.p2);//컴파일 오류가 발생
System.out.println(obj.i);//컴파일 오류가 발생
System.out.println(obj.k);//컴파일 오류가 발생
}
}
ex3)accessobjexam 이 accessobj를 상속하고 있다면
package 다른패키지;
public class accessobjexam{
public static void main(String[] args){
accessobj obj=new accessobj();
System.out.println(obj.p);
System.out.println(obj.p2);
System.out.println(obj.i);//컴파일 오류가 발생
System.out.println(obj.k);//컴파일 오류가 발생
}
}
7.추상 클래스
말그대로 추상클래스는 이 메서드가 모호한 메서드일 떄 사용한다
package javastudy;
public abstract class Bird{
public abstract void sing(); //메서드가 하나라도 추상이면 클래스도 추상이 된다.
}
package javastudy;
public class Duck extends Bird{ //
@override
public void sing(){
System.out.prinln("꽥꽥!!");
}
}
public class duckexam{
public static void main(String[] args){
Duck duck=new Duck();
duck.sing();
Bird b=new Bird(); //컴파일 에러 이유:추상클래스는 부모클래스로 사용가능 but객체를 생성 안됨
}
}
8.super클래스
super 클래스는 부모의 생성자를 호출하는 거다.
truck이 car이란 클래스를 상속하고 truck생성자를 호출할때 super()을 해주면 car생성자도 호출 된다.
public javastudy;
public class truck extends car{
public truck(){
super();//car생성자 호출
System.out.println("truck의 기본생성자입니다.");
}
}
9.오버라이딩
오버라이딩이란 부모가 가진 메서드와 똑같은 모양의 메서드를 자식이 가지는 것
똑같은 메서드를 실행하면 자식클래스의 메서드 실행이된다
같이 실행하려면
super.run();하면 부모도 실행이 된다.
package javastudy;
public class Van extends Car{
public void run(){
System.out.println("van");
}
}
public class Car{
public void run(){
System.out.println("Car");
}
}
public class vanexam{
public static void main(String[] args){
Van van=new Van();
van.run; //van의 run 호출
}
}
10.클래스 형변환
1.작은 그릇에서 더 큰 그릇으로 옮기는 것이면 컴파일 오류 발생안하고 형 변환가능
2.큰 그릇에서 더 작은 그릇으로 옮기는 것이면 컴파일 오류 발생함
즉
car c= new van();
은 가능하다 car가 van의 부모이기 때문에 van의 내용을 담을 수 있다.
그리고 van van =c;는 불가능하다
하지만 van van = (van)c ;로 묵시적 형변환을 하면 가능하다.
그리면 van은 van의 메서드와 c의 메서드 둘 다 이용가능하다.
'백 엔드 > java' 카테고리의 다른 글
자바의 역사와 이 (0) | 2022.04.02 |
---|---|
자바 공부하면서 주의한것 (1) | 2021.12.04 |
자바:Java(4) (1) | 2021.10.28 |
자바:Java(2) (0) | 2021.10.26 |
자바:Java (1) (0) | 2021.10.25 |