> Java > java지도 시간 > 객체지향 캡슐화의 세 가지 주요 특징은 무엇입니까? 캡슐화 구현 방법(코드 예)

객체지향 캡슐화의 세 가지 주요 특징은 무엇입니까? 캡슐화 구현 방법(코드 예)

青灯夜游
풀어 주다: 2018-11-28 09:36:54
앞으로
3167명이 탐색했습니다.

이 글의 내용은 객체지향 캡슐화의 세 가지 주요 기능을 소개하는 것인가요? 캡슐화 구현 방법(코드 예) 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 포장이란? 그리고 캡슐화는 왜 필요한가?

일반적으로 멤버 변수에 일부 합법적이지만 불합리한 값을 할당할 수 있습니다. 이 경우 컴파일 단계와 실행 단계에서 오류가 보고되거나 프롬프트 정보가 제공되지 않습니다. 실제 상황과 일치하지 않습니다. 위의 문제를 방지하려면 멤버 변수의 합법성과 합리성을 보장하기 위해 멤버 변수를 봉인하고 패키지해야 합니다. 이 메커니즘을 캡슐화라고 합니다. 캡슐화는 클래스의 코드와 데이터가 외부 클래스에 의해 정의된 코드에 의해 무작위로 액세스되는 것을 방지하는 보호 장벽으로 생각할 수 있습니다. 이 클래스의 코드와 데이터에 액세스하려면 엄격한 인터페이스 제어를 통과해야 합니다.

2. 캡슐화하는 방법은 무엇입니까?

(1) 멤버 변수를 비공개하고 private 키워드를 사용하여 수정합니다.

(2) 공개 get 및 set 메소드를 제공하고 메소드 본문에서 합리적인 값을 판단하고 public 키워드를 사용하여 수정합니다. (3) 합리적인 값을 판단하기 위해 구축 메소드에서 set 메소드를 사용합니다.

3 예는 다음과 같습니다. /*Person.java*/

/*
     编程实现Person类的封装
 */
public class Person{
    //1.私有化成员变量,使用private关键字修饰
    private String name; 
    private int age;
    private String country;
    //使用static关键字修饰成员变量表示提升为类层级只有一份被所有对象共享
    //public static String country;

    //3.在构造方法中调用set方法进行合理值的判断
    public Person(){
    }
    public Person(String name, int age, String country){
        setName(name);
        setAge(age);
        setCountry(country);
    }

    //2.提供公有的get和set方法,在方法体中进行合理值的判断
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name = name;
    }
    public int getAge(){
        return age;
    }
    public void setAge(int age){
        if(age > 0 && age < 150){
            this.age = age;
        }else{
            System.out.println("年龄不合理!!!");
        }
    }
    public String getCountry(){
        return country;
    }
    public void setCountry(String country){
        this.country = country;
    }

    public void show(){
        System.out.println("我是" + getName() + ",今年" + getAge() + "岁了,来自" + getCountry() + "!");
    }

    //自定义成员方法描述吃饭的行为
    public void eat(String food){
        System.out.println(food + "真好吃!");
    }
    //自定义成员方法描述娱乐的行为
    public void play(String game){
        System.out.println(game + "真好玩!");
    }
}
로그인 후 복사

위 내용은 객체지향 캡슐화의 세 가지 주요 특징은 무엇입니까? 캡슐화 구현 방법(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿