Lesson_6_2 上课笔记 一条鱼

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 }

 运行结果

原文地址:https://www.cnblogs.com/CocoonFan/p/2863429.html