类的权限修饰符
Java语言中的权限修饰符主要包括private、public和protected,这些修饰符控制着对类和类的成员变量以及成员方法的访问。如果一个类的成员变量或成员方法被修饰为private,则该成员变量只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的。如果将类的成员变量和成员方法的访问权限设置为public,则除了可以在本类使用这些数据之外,还可以在子类和其他包中的类中使用。如果一个类的访问权限被设置为private,这个类讲隐藏其内的多有数据,以免用户直接访问它,如果需要使类中的数据被子类或其他包中的类使用,可以将这个类设置为public访问权限。如果一个类使用protected修饰符,那么只有本包内该类的子类或其他类可以访问此类中的成员变量和成员方法。
public和protected修饰的类可以由子类访问,如果子类和父类不在同一包中,那么只有修饰符为public的类可以被子类进行访问。如果父类不允许通过继承产生的子类访问他的成员变量,那么必须使用private声明父类的这个成员变量。
注意:当声明类时不使用private、public和protected修饰符设置类的权限,则这个类预设为包存取范围,即只有一个包中的类可以调用这个类的成员变量或成员方法。
以矩形题目为例:
package org.hanqi.pn0120; //公共的 public class JuXing2 { //私有的 类的内部 封装 private double chang; //保护的 protected public double kuan;
成员变量
在Java语言中对象的属性称为成员变量,也可以称为属性。为了了解成员变量,首先定义一个图书类,成员变量对应于类对象的属性,在Book类中设置id、name和category3个成员变量,分别对应于图书编号、图书名称和图书类别这3个图书属性。
(1)修饰符 数据类型 变量名;
(2)规范 设成私有private
开放getter或setter方法
POJO 简单JAVA对象 ①只有属性和getter,setter方法②没有业务逻辑
以矩形为例
package org.hanqi.pn0120; //公共的 public class JuXing2 { //私有的 类的内部 封装 private double chang; //保护的 protected public double kuan; public double getchang() { return chang; } public double getkuan() { return kuan; } public void setchang(double chang) { //加验证 if(chang>0) { this.chang=chang; } else { System.out.println("长度值"+chang+"无效"); } } public void setkuan(double kuan) { if(kuan<=0) { System.out.println("宽度值"+kuan+"无效"); } else { this.kuan=kuan; } } public JuXing2() { } public JuXing2(double chang,double kuan) { //this.chang=chang; //this.kuan=kuan; setchang(chang); setkuan(kuan); } //计算面积 double getMianJi() { return this.chang*this.kuan; } public static void main(String[] args) { JuXing2 myJX=new JuXing2(20,6); myJX.chang=12; System.out.println("长="+myJX.chang); System.out.println("矩形的面积="+myJX.getMianJi()); } }
package org.hanqi.pn0120; public class Test1 { public static void main(String[] args) { JuXing2 myJX1=new JuXing2(20,6); myJX1.kuan=10; //读取属性值 System.out.println("宽="+myJX1.getkuan()); System.out.println("长="+myJX1.getchang()); System.out.println("面积="+myJX1.getMianJi()); JuXing2 myJX2=new JuXing2(); myJX2.setchang(-30); myJX2.setkuan(0); System.out.println("矩形的面积"+myJX2.getMianJi()); } }