Lesson_6_2
2013-01-16
面向对象基础(2)----封装
1 /*********************************************************** 2 * Lesson_6_2 3 * 4 * 面向对象基础(2)--封装 5 * 一条鱼 6 * 7 * 13-01-16 8 * note by CocoonFan 9 ************************************************************ 10 ************************************************************ 11 * 12 * 一、面向对象优点 13 * 1、便于程序模拟现实世界中的实体(类实现) 14 * 2、隐藏细节 15 * 对象的行为和属性被封装在类的里面,外界不需要关注内部 16 * 的实现细节。 17 * 3、可重用:通过类的模板,创建多个类的对象 18 * 19 * 二、成员运算符 20 * 对象名.成员名 21 * 22 * 三、访问权限public和private 23 * 一般成员变量为 private, 方法为 public 24 * 25 * 四、访问私有程艳变量 26 * 1、在类的里面定义一个公有的方法去访问私有的成员 27 * 2、通过构造方法设置 28 * 29 * 五、类的实例化 30 * 六、构造方法(2) -- 给属性初始化 31 * 七、this指针 -- this指向调用它对象 32 * 1、每一个成员方法都隐含的调用this 33 * 34 ************************************************************/ 35 36 public class Lesson_6_2{ 37 public static void main(String []args){ 38 Fish fish = new Fish();//这里实例化对象 39 40 fish.setSex("鱼妖"); 41 System.out.println("鱼的性别是:" + fish.getSex()); 42 43 fish.setSex("女"); 44 System.out.println("鱼的性别是:" + fish.getSex()); 45 46 fish.setKind("美人鱼"); 47 fish.swimming(); 48 System.out.println("鱼的重量是:" + fish.getWeight()); 49 50 //当有多个变量要初始化的时候常采用构造方法初始化 51 Fish whale = new Fish("女","座头鲸", 10000.0f); 52 System.out.println("鱼的类型是:" + whale.getKind()); 53 System.out.println("鱼的性别是:" + whale.getSex()); 54 System.out.println("鱼的重量是:" + whale.getWeight()); 55 whale.swimming(); 56 57 //匿名对象 58 //下面两个对象是两个不同的对象 59 new Fish(); 60 new Fish(); 61 62 } 63 } 64 65 66 class Fish{ 67 private String sex = "不知道"; //这里也可以设置初始值 68 private String kind; //不赋值默认为null 69 private float weight = 0.1f; 70 71 /*构造方法: 72 1、如果没有写构造方法,JVM会自动的创建一个没有参数的空的构造方法即: 73 public Fish(){} 74 2、如果定义了带有参数的构造方法,则JVM不会创建空的不带参数的构造方法 75 3、如果有多个构造方法,遵循参数匹配原则 76 4、每个对象在创建的时候一定会调用构造方法,其作用是在内存中划分一块空间 77 5、每个对象的构造方法只能被调用一次 78 */ 79 public Fish(){ 80 this.sex = "鱼妖你妹"; 81 } 82 public Fish(String sex, String kind, float weight){ 83 this.sex = sex; 84 this.kind = kind; 85 this.weight = weight; 86 } 87 88 //注意get和set的命名规范 "java bean" 89 //设置鱼的性别 90 public void setSex(String sex){ 91 if(!sex.equals("男") && !sex.equals("女")){ 92 System.out.println("设置性别错误,只能是男或者女"); 93 }else{ 94 this.sex = sex; 95 } 96 } 97 98 //获取鱼的性别 99 public String getSex(){ 100 /*if(sex.equals("男") || sex.equals("女")){ 101 return sex; 102 }else{ 103 return "还没有设置鱼的性别呢!!"; 104 }*/ 105 return sex; 106 } 107 108 //设置鱼的种类 109 public void setKind(String kind){ 110 this.kind = kind; 111 } 112 113 //获取鱼的种类 114 public String getKind(){ 115 return kind; 116 } 117 118 //设置鱼的重量 119 public void setWeight(float weight){ 120 if(weight < 0){ 121 System.out.println("书籍错误:范围在0~N"); 122 }else{ 123 this.weight = weight; 124 } 125 } 126 127 //获取鱼的重量 128 public float getWeight(){ 129 return weight; 130 } 131 132 //鱼在游泳 133 public void swimming(){//设置过名字就显示名字 134 if(this.kind.equals(null)){ 135 System.out.println("鱼正在水里面游泳···"); 136 }else{ 137 System.out.println(this.kind + "正在水里面游泳···"); 138 } 139 } 140 }
运行结果