아옳옳의 코딩공부/아옳옳 자바코딩공부
2021-02-24 자바공부 (상속4 상속을 사용한 안드로이드 작업)
아옳옳
2021. 2. 24. 20:51
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
반응형