이 글의 내용은 객체지향 캡슐화의 세 가지 주요 기능을 소개하는 것인가요? 캡슐화 구현 방법(코드 예) 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!