public class Person {public String name;public int age;private double weight;} public class Test {public void main (String[] args) {Person people = new Person();people.name = "John";people.age = 20;people.weight = 65.8;}} 상단의 코드를 진행하면 어떤 결과가 나올까?정답은 " PrivateAccess 에러 " 이다. private로 선언된 weight의 변수에 접근하려고 하니 저런 에러가 발생하는 것이다. 실제로 이클립스에서는 people.weight = 65.8을 넣을때 "The field Person.weight is not vi..
메소드에 변수값 자체를 전달하는 경우 public void countUp(int cnt) { cnt++;} public static void main(String[] args) {int cnt =0;TestObject test = new TestObject(); // TestObject라는 객체 생성test.countUp(cnt);System.out.println("cnt값 : "+cnt);}결과cnt값 : 0cnt값이 1로 증가할 것 같지만 증가하지 않는다. 이유는 countUp() 메소드 안에서 쓰이는 cnt 변수는 main 메소드 안에있는 cnt와 이름만 같을뿐, 영역(?)이 다르다. 각자의 메소드 안에있는 변수값들은 해당 메소드 안에서만 쓰인다.상단의 countUp 메소드는 하단처럼 정의한 것과 ..
추상클래스는 인터페이스와 비슷한 역할을 한다.추상클래스는 추상메소드를 하나라도 포함하면 추상클래스라고 하는데,추상메소드든 클래스든 앞에 abstract를 붙여주면 된다.public abstract class A { public abstract String getName(); // 추상메소드도 인터페이스의 메소드와 마찬가지로 구현부가 없다.} 그렇다면 저 구현부가 없는 getName() 메소드를 어디서 구현해줘야 할까?답은 인터페이스와 같다. 인터페이스는 해당 인터페이스를 implements 하는 클래스에서 메소드의 구현을 해주듯이, 추상클래스도 자신을 상속받는 클래스에서 추상클래스의 구현을 해주면 된다.public class B extends A { public String getName() { retu..
인터페이스 - implements로 부름상속할 클래스(부모클래스) - extends로 부름 ------------------------------------------------------------------[CASE 1] - 자식클래스가 1개인 경우! (여기서 자식클래스는 클래스B를 말함) 1) 부모클래스 Apublic class A {public String name; public String setName(String name) {this.name = name;}} 2) 인터페이스 Bpublic interface B {public String getName(); //안에 구현내용이 없는 메소드 선언했음 -> 이건 B라는 인터페이스를 implements 하는 클래스에서 구현내용을 정의해줘야함} 3)..
private < default < protected < public 으로 접근이 가능하다. (오른쪽으로 갈 수록 접근 가능성이 커짐) 여기서 default는 접근제어자가 붙지않은 것을 의미함 (아무것도 안붙어있는거 예를들면 String name; 이런거)접근제어자 명 접근가능한 범위 (변수 & 메소드)private해당 변수, 메소드가 선언된 class 내에서만 접근가능default private 범위 + 같은 패키지를 공유하는 모든 클래스에서 접근가능protecteddefault 범위 + 해당 클래스를 상속받은 외부 패키지의 모든 클래스에서 접근가능public어떤 클래스든지 접근 가능
public class Animal {String kind; public Animal(String kind) { //클래스와 메소드 이름이 같고(Animal), return 타입을 정의하지 않음->생성자this.setKind(kind);} public void setKind(String kind) {this.kind = kind;} public void main(String[] args) {Animal animal = new Animal("bird"); //상단에 선언한 생성자로 생성 (괄호안에 안써주면 오류발생함)}} ------------------------------------------------------------------------------ 디폴트 생성자는public class Anim..
혼자 공부하기 위한 자바 기초 정의 by 깽 [ver 1.0] Java : 이식성 높음 (운영체제 어디서든 복사해서 가져다 쓸 수 있음) .java -- 컴파일 1번 --> .class 이클립스를 사용하여 자바파일을 컴파일 해주면 쓸 수 없는 2가지 명령어가 있다 (javac와 java).java 파일은 javac 명령어를 통해 .class 파일을 생성하고 (컴파일) , 그렇게 생성된 class파일은 바이너리 파일인데, 이 바이너리 파일을 JVM이 인식할 수 있다. 그러면 이렇게 바이너리 파일로 변환된 .class 파일을 java명령어를 통해 실행시킬 수 있다. 그러면 JVM은 해당 .class 파일을 실행시키고 그 수행결과가 컴퓨터에 수행된다. OOP(객체지향 프로그래밍)은 부품객체들을 먼저 만든 뒤 ..