Java Fundamentals 10 객체 지향 ~ 패키징

프로그래밍을 좋아하는 당신처럼!
SpringBoot 실습 과정 배우기 https://edu.csdn.net/course/detail/31433
SpringCloud 입문 과정 배우기 https://edu.csdn.net/course/detail/31451


객체 지향 시리즈 :
클래스와 개체를
캡슐화
상속
다형성
static 키워드와 싱글 모드
인터페이스와 내부 클래스

머리말

이 기사에서는 캡슐화의 역할에서 액세스 수정자를 사용한 정보 숨기기, 패키지 사용에 이르기까지 객체 지향 캡슐화 기능에 대해 배우고 마지막으로 객체 간의 통신에 대해 설명합니다.

패키지 특성

객체 지향에는 세 가지 주요 특징이 있습니다.

  • 꾸러미
  • 상속하다
  • 다형성

객체 지향의 주요 라인을 마스터하는 것은 위의 세 가지 특성을 마스터하는 것입니다.

캡슐화 란 무엇입니까 캡슐화
라는 용어에는 두 가지 의미가 있습니다.

  1. 패키징
    간편한 호출 및 유지 관리를 위해 코드를 전체로 포장
  2. 인클로저
    정보 숨기기, 구현 세부 정보 숨기기 및 보안 향상

휴대폰은 부품이 포장 된 상태에서 사용자 만 사용할 수 있으며 단락의 위험이 없습니다.
여기에 사진 설명 삽입

캡슐화의 이점

  1. 높은 보안
  2. 사용하기 쉬운
  3. 높은 유지 보수

캡슐화 실현

  1. 코드 래핑 코드
    를 메서드로 래핑하고, 속성과 메서드를 클래스로 래핑하고, 클래스를 패키지에 저장합니다.
  2. 정보 숨김
    은 다른 클래스에서 호출하고 싶지 않은 특정 속성, 메서드 및 클래스를 깁니다.

액세스 수정 자

액세스 수정자는 속성, 메소드 및 클래스의 액세스 범위를 제한하는 데 사용되는 Java의 키워드입니다.
액세스 수정자는 다음과 같습니다.

  • 공공의
  • 은밀한
  • 보호
  • 기본값을 쓰지 않음

액세스 수정 자에 해당하는 액세스 범위

속성 캡슐화

Java 클래스는 일반적으로 속성을 전용으로 정의한 다음 속성에 액세스하고 수정하기위한 공용 getter / setter 메서드를 제공합니다.

private double price;
//返回属性的值
public double getPrice(){
	return this.price;
}
//修改属性的值
public void setPrice(double price){
	this.price = price;
}

이런 식으로 쓰는 것의 장점 :
1) 값의 범위를 설정 방법으로 제어 할 수 있습니다.

if(price < 0){
	System.out.println("价格不能小于0");
	this.price = 0;
}else{
	this.price = price;
}

2) 속성 제어 가능 : 읽기-쓰기, 읽기 전용, 쓰기 전용

패키지 캡슐화

가방이란?
폴더와 유사하게 관련 기능이있는 클래스가 함께 저장됩니다.
효과:

  1. 찾기 쉬움
  2. 이름 충돌 방지

패키지를 만듭니다 (패키지 코드는 클래스의 첫 번째 문장이어야 함).

package 包名;

패키지의 클래스를 가져옵니다 (패키지의 클래스를 가져올 필요가 없음).

import java.util.Scanner; 导入一个类
import java.util.*; 导入包中的所有类

개체 간의 통신

Java 프로그램이 실행 중일 때 서로 협력하려면 많은 수의 객체가 필요합니다. 객체와 객체는 종종 서로를 호출해야합니다. 객체 호출은 종종 매개 변수 전달에 의해 구현됩니다.

LOL에서 영웅의 상호 공격을 시뮬레이션합니다.
hero 클래스를 다시 작성합니다 . private 속성 정의, get \ set 메서드
정의 , 구성 방법 추가 및 공격 방법 정의 :

  1. 적을 나타내는 영웅 매개 변수 추가
  2. 공격 방식에서 적은 피를 빼야합니다 : 적의 현재 혈액량-현재 영웅의 공격력
package com.xray.java7;
/**
 * 定义英雄类。
	属性:名字、血量、蓝量、攻击力
	方法:攻击、移动、回城
 */
public class Hero {
	//名字
	private String name;
	//血量
	private int hp;
	//蓝量
	private int mp;
	//攻击力
	private int attack;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getHp() {
		return hp;
	}
	public void setHp(int hp) {
		this.hp = hp;
	}
	public int getMp() {
		return mp;
	}
	public void setMp(int mp) {
		this.mp = mp;
	}
	public int getAttack() {
		return attack;
	}
	public void setAttack(int attack) {
		this.attack = attack;
	}
	/**
	 * 無參的構造方法
	 */
	public Hero(){
		System.out.println("調用Hero的無參構造方法");
	}
	/**
	 * 有參的構造方法
	 */
	public Hero(String name,int hp,int mp,int attack){
		//使用this關鍵字調用的是屬性
		//通過參數給每個屬性賦值
		this.name = name;
		this.hp = hp;
		this.mp = mp;
		this.attack = attack;
	}
	/**
	 * 攻击敵人
	 */
	public void attack(Hero enemy){
		System.out.println("英雄"+name+"在攻击"+enemy.getName());
		//敵人扣血, 設置敵人的血量為敵人當前血量 - 當前英雄的攻擊力
		enemy.setHp(enemy.getHp() - this.getAttack());
		System.out.println("敵人"+enemy.getName()+"剩餘血量:"+enemy.getHp());
	}
	/**
	 * 移动
	 */
	public void move(){
		System.out.println("英雄"+name+",攻击力"+attack+"在移动!");
	}
	/**
	 * 回城
	 */
	public void back(){
		System.out.println("英雄"+name+"血量"+hp+",蓝量"+mp+",回城了!");
	}
}

public class TestHero {

	public static void main(String[] args) {
		//創建兩個英雄
		Hero hero1 = new Hero("提莫",400,200,80);
		Hero hero2 = new Hero("劍聖",300,300,100);
		//兩個英雄跑過來
		hero1.move();
		hero2.move();
		//互相進行攻擊
		hero1.attack(hero2);
		hero2.attack(hero1);
		//回城
		hero1.back();
		hero2.back();
	}
}

종료

이 기사의 끝, 이번 작업은
울트라 맨이 몬스터와 싸우는 게임 장면을 업그레이드하는 것 입니다. 울트라 맨은 이름, 공격력, 혈액량과 같은 속성을 가지고 있습니다. 그것은 비행, 가벼운 공격,
몬스터는 이름, 공격력 및 혈액량 속성에는 기술이 있습니다 : 달리기, 무차별 대입 공격.
울트라 맨과 몬스터 개체의 상호 공격을 시뮬레이션합니다.
요구 조건 :
1. 한 파티가 죽을 때까지 울트라 맨이 몬스터와 싸우게한다
2. 몬스터에 반사 공격 스킬 추가이 스킬은 몬스터가 공격을 받았을 때 호출되며 상대 공격력의 10 %를 상대에게 반사한다.


다른 Java 지식을 배워야하는 경우 여기 에서 Java 요약에 대한 매우 상세한 지식을 찌르십시오.

추천

출처blog.csdn.net/u013343114/article/details/112358966