Java语言程序设计 教学课件 作者 清华大学计算机与信息 4面向对象程序设计(下).ppt
文本预览下载声明
类成员(属性和方法)的访问控制 一个类作为整体对程序的其他部分可见,并不能代表类内的所有属性和方法也同时对程序的其他部分可见,前者只是后者的必要条件。 属性和方法的访问控制符 public 公共域和公共方法,可被任何类使用。 protected 可被同包中其他类使用。 可被子类继承(包括位于不同包中的子类) 无访问限定符 可被同包中其他类使用。 private 只限在本类内使用。 类成员(属性和方法)的访问控制 公共类(public) 默认类 类成员访问控制符 public protected 缺省 private public protected 缺省 private 可以访问类成员的区域 A B+C B D B B B D 访问控制一般原则 本包使用,采用缺省方式; 供其他包使用,采用public控制符; 为了使对象具有良好的封装性,可将类的实例变量设计成私有,但为了使其它类或对象能够访问私有实例变量,本类必须提供访问私有变量的方法(公共方法)。 按照惯例: 读私有变量的方法取名为get… 写私有变量的方法取名为 set… 访问控制符例 public class Employee { private String name ; private char sex ; private int age ; private float salary ; public Employee(String n,char x, int a, float s){ name = n ; sex = x ; age = a ; salary = s ; } void upSalary(float inc) { salary = salary + inc ; } public int getAge() { return age ; } public void setAge(int a){ age=a ;} public String getInfo() { return 姓名: + name + 性别: + sex + 年龄: + age ; } } 其他类不能访问, 子类也不能继承 访问控制符例 public class Test { //与Employee在同一包中 public static void main(String[] args){ Employee emp = new Employee(赵兵,男,28,1500.0F); emp.upSalary(500); System.out.println(emp.age); //该语句出错 emp.setAge(29) ; System.out.println(emp.getAge()); System.out.println(emp.getInfo()); } } 访问控制符例 public class Manager extends Employee { float allowance ; public Manager(String n,char x , int a , float s,float aa ){ super(n,x,a,s) ; allowance = aa ; } public String getInfo() { return name+sex+age+salary ; // 出错,父类属性没有继承 } } //Manager 接口-interface 接口-具有抽象类的概念 接口中的方法都是没有方法体的抽象方法 public abstract 方法(修饰符可省) 接口中的属性只能是常量 public static final 属性 (修饰符可省) 接口定义的仅仅是实现某一特定功能的一组方法的对外接口和规范,而并没有真正地实现这个功能。 接口所规定的一组功能的实现是在继承了这个接口的各个类中完成的,由这些类来具体定义接口中所有抽象方法的方法体。 通常把对接口的“继承”称为“实现”。 接口的实现 Object 类 Abstract class class final class 接口 class java—单重继承 继承 实现 接口的定义 public interface 接口名 [extends 父接口名列表] {
显示全部