프로그래밍을 좋아하는 당신처럼!
SpringBoot 실습 과정 배우기 https://edu.csdn.net/course/detail/31433
SpringCloud 입문 과정 배우기 https://edu.csdn.net/course/detail/31451
객체 지향 시리즈 :
클래스와 개체를
캡슐화
상속
다형성
static 키워드와 싱글 모드
인터페이스와 내부 클래스
머리말
이 기사에서는 캡슐화의 역할에서 액세스 수정자를 사용한 정보 숨기기, 패키지 사용에 이르기까지 객체 지향 캡슐화 기능에 대해 배우고 마지막으로 객체 간의 통신에 대해 설명합니다.
패키지 특성
객체 지향에는 세 가지 주요 특징이 있습니다.
- 꾸러미
- 상속하다
- 다형성
객체 지향의 주요 라인을 마스터하는 것은 위의 세 가지 특성을 마스터하는 것입니다.
캡슐화 란 무엇입니까 캡슐화
라는 용어에는 두 가지 의미가 있습니다.
- 패키징
간편한 호출 및 유지 관리를 위해 코드를 전체로 포장 - 인클로저
정보 숨기기, 구현 세부 정보 숨기기 및 보안 향상
휴대폰은 부품이 포장 된 상태에서 사용자 만 사용할 수 있으며 단락의 위험이 없습니다.
캡슐화의 이점
- 높은 보안
- 사용하기 쉬운
- 높은 유지 보수
캡슐화 실현
- 코드 래핑 코드
를 메서드로 래핑하고, 속성과 메서드를 클래스로 래핑하고, 클래스를 패키지에 저장합니다. - 정보 숨김
은 다른 클래스에서 호출하고 싶지 않은 특정 속성, 메서드 및 클래스를 숨 깁니다.
액세스 수정 자
액세스 수정자는 속성, 메소드 및 클래스의 액세스 범위를 제한하는 데 사용되는 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) 속성 제어 가능 : 읽기-쓰기, 읽기 전용, 쓰기 전용
패키지 캡슐화
가방이란?
폴더와 유사하게 관련 기능이있는 클래스가 함께 저장됩니다.
효과:
- 찾기 쉬움
- 이름 충돌 방지
패키지를 만듭니다 (패키지 코드는 클래스의 첫 번째 문장이어야 함).
package 包名;
패키지의 클래스를 가져옵니다 (패키지의 클래스를 가져올 필요가 없음).
import java.util.Scanner; 导入一个类
import java.util.*; 导入包中的所有类
개체 간의 통신
Java 프로그램이 실행 중일 때 서로 협력하려면 많은 수의 객체가 필요합니다. 객체와 객체는 종종 서로를 호출해야합니다. 객체 호출은 종종 매개 변수 전달에 의해 구현됩니다.
LOL에서 영웅의 상호 공격을 시뮬레이션합니다.
hero 클래스를 다시 작성합니다 . private 속성 정의, get \ set 메서드
정의 , 구성 방법 추가 및 공격 방법 정의 :
- 적을 나타내는 영웅 매개 변수 추가
- 공격 방식에서 적은 피를 빼야합니다 : 적의 현재 혈액량-현재 영웅의 공격력
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 요약에 대한 매우 상세한 지식을 찌르십시오.