728x90
반응형
오늘은 어제배운 상속을 다시한번 복습을 하기위한 공부를 했다~
안드로이드 스튜디오를 활용하여 간단한 프로그램을 만들었다
일단보이는것처럼 클래스를 만들어 주었다 . (코드공부이기때문에 xml 코드는 생략할예정 )
각 코드에 주석을 보고 이해 하면 된다
메인엑티비티 클래스
package com.example.javachap14;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
public class MainActivity extends AppCompatActivity {
EditText editname;
ImageView imageView;
Person person;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editname = findViewById(R.id.edtName);
imageView = findViewById(R.id.imageView);
Button btn_Create = findViewById(R.id.btnmake);
Button btn_Walk = findViewById(R.id.btnwalk);
Button btn_run = findViewById(R.id.btnrun);
Button btn_Cry = findViewById(R.id.btncry);
btn_Create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//버튼이 눌렸을때 라디오버튼의 선택사항에따라 객체를 생성한다
RadioButton radioButton = findViewById(R.id.rdo_person);
boolean person_Checked = radioButton.isChecked();
if (person_Checked) {
//Person 객체를 생성하는 메소드 호출 아래에 있다
createPerson(editname.getText().toString());
} else {
createBaby(editname.getText().toString());
}
}
});
btn_Walk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (person != null) {
if (person instanceof Baby) {
person.walk(5);
} else {
person.walk(10);
}
}
}
});
btn_run.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (person != null) {
if (person instanceof Baby) {
person.run(10);
} else {
person.run(20);
}
}
}
});
btn_Cry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (person != null) {
person.cry();
}
}
});
}
// 각 객체를 만드는 메소드
void createPerson(String name) {
person = new Person(name, this);
imageView.setImageResource(R.drawable.person);
}
//베이비를 만들어서 펄슨에 넣어줬다
void createBaby(String name) {
person = new Baby(name, this);
imageView.setImageResource(R.drawable.baby);
}
}
부모클래스
package com.example.javachap14;
import android.widget.Toast;
//Person 부모 클래스 여기이 속성을 자식이 받아서 사용
public class Person {
String name;
MainActivity activity; // 이 클래스에서 토스트 메시지를 사용할거기 때문에 화면을 관리는 액티비티도 받아온다
// Person 생성자
public Person(String name, MainActivity activity) {
this.name = name;
this.activity = activity;
}
//걸어간다 라는 버튼을 눌럿을때 호출될 메소드
void walk(int speed){
Toast.makeText(activity.getApplicationContext(), name+"이(가) " + speed +"km 속도로 걸어갑니다", Toast.LENGTH_LONG ).show();
//버튼이 눌렸을때 보여줄 이미지를 바꿔준다
activity.imageView.setImageResource(R.drawable.person_walk);
}
//뛴다 라는 버튼을 눌럿을때 호출될 메소드
void run(int speed){
Toast.makeText(activity.getApplicationContext(), name+"이(가) " + speed +"km 속도로 뛰어갑니다", Toast.LENGTH_LONG ).show();
activity.imageView.setImageResource(R.drawable.person_run);
}
//이건 자식Baby에서만 사용할것이지만 오버라이딩 하기위하여 만들어 놈
void cry(){
Toast.makeText(activity.getApplicationContext(), name+"이(가) 안울어!!! " , Toast.LENGTH_LONG).show();
//여기에서 아이디값은 정수값이라 0을 넣게 되면 아무것도 없는거이 된다
activity.imageView.setImageResource(0);
}
}
자식클래스
package com.example.javachap14;
import android.widget.Toast;
import com.example.javachap14.MainActivity;
import com.example.javachap14.R;
// Person클래스를 상속받은 Baby 자식클래스
public class Baby extends Person{
public Baby(String name, MainActivity activity) {
super(name, activity);
}
//걸어간다 라는 버튼을 눌럿을때 호출될 메소드
@Override
void walk(int speed) {
Toast.makeText(activity.getApplicationContext(), name+"이(가) " + speed +"km 속도로 걸어갑니다", Toast.LENGTH_LONG ).show();
//버튼이 눌렸을때 보여줄 이미지를 바꿔준다
activity.imageView.setImageResource(R.drawable.baby_walk);
}
//뛴다 라는 버튼을 눌럿을때 호출될 메소드
@Override
void run(int speed) {
Toast.makeText(activity.getApplicationContext(), name+"이(가) " + speed +"km 속도로 뛰어갑니다", Toast.LENGTH_LONG ).show();
activity.imageView.setImageResource(R.drawable.baby);
}
//운다 라는 버튼을 눌럿을때 호출될 메소드
@Override
void cry() {
Toast.makeText(activity.getApplicationContext(), name+"이(가) 앵앵앵앵앵응앵앙엉앙엥 울어용~~ 우쭈쭈쭈", Toast.LENGTH_LONG ).show();
activity.imageView.setImageResource(R.drawable.baby_cry);
}
}
사람만들기를 눌러서 그 이름을 가진 사람을 만들어 주고 걷기 뛰기 울기 등 각각의 버튼을 눌렀을때 사진이 변경 되면서 토스트 메시지가 나오게 만들어 보았다
코드내부에 상속에서 배웠던 오버라이드 , instansof등 다 이용해서 복습한다 생각하고 공부했다
객체지향에서 상속이랑 개념은 정말중요하다고 해서 오늘 수업에서 복습을 해서 뭐 좋았다~
오늘도 고생했어옳~~~~~~~~~
728x90
반응형
'아옳옳의 코딩공부 > 아옳옳 자바코딩공부' 카테고리의 다른 글
2021-02-26 자바공부 (interface, Inner클래스[내부클래스]) (0) | 2021.02.26 |
---|---|
2021-02-25 자바공부 (abstract 클래스 , interface) (0) | 2021.02.25 |
2021-02-23 자바공부 (상속3 이해 , 상속의 사용목적) (0) | 2021.02.23 |
2021-02-20 자바공부 (시스템 입출력 ,배열 , 열거타입) (0) | 2021.02.20 |
2021-02-19 자바공부 (상속2 오버라이딩 ,instanceof) (0) | 2021.02.19 |