第八章 面向对象的Java程序
第八章 面向对象的Java程序
学习目标: 定义封装及其优点 掌握 public和 private的使用 编写封装私有成员的代码 掌握构造器的用途和编写
学习目标: ➢定义封装及其优点 ➢掌握public和private的使用 ➢编写封装私有成员的代码 ➢掌握构造器的用途和编写
封装 操作和属性总称为对象的成员 对象成员可以pubc(公有的)或 private(私有 的) 大多数或全部变量都为私有 变量通过它们自己类的方法修改。 其他类都只与另一个类中很少的几部分接口。 不影响接口的情况下可更改实现。 如果一个变量或方法定义为公有的,则它是接口的一部分,而且其他类可以访 它 如果一个变量或方法定义为私有的,则它是实现的一部分,只能类自己的成员 访问它,而其他类不能访问它;
封装 • 操作和属性总称为对象的成员 • 对象成员可以public(公有的)或private(私有 的)。 • 大多数或全部变量都为私有。 • 变量通过它们自己类的方法修改。 • 其他类都只与另一个类中很少的几部分接口。 • 不影响接口的情况下可更改实现。 ➢ 如果一个变量或方法定义为公有的,则它是接口的一部分,而且其他类可以访 问它; ➢ 如果一个变量或方法定义为私有的,则它是实现的一部分,只能类自己的成员 访问它,而其他类不能访问它;
实现封装 在类成员前设置 public或 private private int myInt public String name public void getNameo return name, 通过声明类的访问控制符可以使整个程序 结构清晰、严谨,减少可能产生类间干扰 和错误
实现封装 • 在类成员前设置public或private private int myInt; public String name; public void getName() { return name; } • 通过声明类的访问控制符可以使整个程序 结构清晰、严谨,减少可能产生类间干扰 和错误
访问控制修饰符:一组用来限定类、属性或方法被 程序里的其他部分访问和调用的修饰符。 类: public缺省 丶。魇性和方法: public、 private、 protected、缺省 若类声明为 public,则表明这个类可以被所有的其 他类访问和引用 即其他类可以创建这个类的对象,并访问这个类内部的可 见的成员变量、调用可见的方法 若成员变量声明为 public其他类的方法可以直接 访问它,但这样破坏了封闭性 若方法声明为 public,其他类可以直接调用这个方 法,这样的方法往往作为操作类对象的接日
缺省:没有设置访问控制符 争说明该类、属性或方法具有缺省访问控制权限。 包访问性:这样的类、属性和方法只能被同一个包中 的类访问和引用。 r private:用 private修饰的属性和方法只能被类 自身访问和修改,而不能被任何其他类(包括子 类)获取和引用。 应该将不希望他人随意引用或修改的属性设置成 private,以此将它们隐藏起来,从而实现面向对象 的程序设计思想。 用 protected修饰的成员变量可以被三种类所引用: 其包中的孩把类子 作用:允许其他包中该类的子类访问
[控都本类臭鹑 public 缺省 √√√ √xx√ X private √×√ X protected X
1 public class PublicExample 23456789 public static void main (String args [j Publicclass pc - new publicclass(); pc. publicInt =277 pc. publicMethod(); 1 public class Publicclass 27 2345578 public int publicIst; public void publicMethod( System. out. println(publicInt)i
1 public class PrivateExample 23456789 public static void main (String args [] PrivateClass pc= new PrivateClass(i pc. privateInt =27 pc privateMethod() 1 class privateclass 2345678 private int privateInt; private void privateMethod( System. out. println(privateInt)i
get和set方法 变量是私有的时,必须通过成员方法访问。 get和set方法取值和存值 311C1a曰 上ca1aed工tem mY正t ⊥七em-D=a工ue PuRn t工t∈ ⊥ turn五tem工D ⊥工 工之 public class EncapsulatedItem2 12345 H五 vate nt itemnAme工 public void setItemNumber (int newvallle if ((newvalue > 1) && (newwValue < 10000)) JtemNumber newvalue: 工工 2 return itemNumberi 14 15} 查看结果 Access Test java
get 和 set 方法 • 当变量是私有的时,必须通过成员方法访问。 • get和set方法取值和存值 查看结果:AccessTest.java