面向对象基础(2)
2018-02-05 20:09
99 查看
属性与修饰符
属性是用来表示一个方法或者对一个方法的字段,方便进行调用,字段是与类相关的变量。
比如Cat中设置的猫的名字,现在增加一个一个猫叫次数,ShoutNum的属性
public修饰的是共有的,private修饰的是私有的。
我们在声明ShoutNum的时候,还产生了一个'get'方法和一个'set'方法:
get方法返回与声明相同的数据类型,表示调用时可以访问内部的字段的值或者引用。
set没有返回值的类型,只有一个隐式参数(括弧里的),用来接收传进的参数,即调用时可以给该属性赋值。
为什么用private声明的还需要有set方法呢?
因为就像一个家来说,public就是没有墙,谁都可以进。private就是四周都是墙,进不去出不来,这是不可以的,所以有了get和set方法,用来进行空气阳光神马的流通。
下面做个方法用来控制叫声次数,控制它最多叫10声:
封装
封装可以减少耦合性,什么是耦合性?
藕,有藕断丝连只说,耦合性就是说两者直接的关系,一个变动影响了另一个,这样的影响越大,则说明耦合性越强。
封装可以实现内部的自由改动。
封装具有清晰的对外口。
就像刚才我们把Cat提取出来,在内部进行改动,在main方法中没有改动什么,在Cat方法中就有set和get让外界调用。
那么咱们来创建一个狗Dog叫的功能,嗯……很简单,仿写Cat就好了:
但是有没有发现Dog和Cat的代码有很多相似的地方,或者说基本没啥不一样吗?
下一篇文章给予解释和相关代码。
属性是用来表示一个方法或者对一个方法的字段,方便进行调用,字段是与类相关的变量。
比如Cat中设置的猫的名字,现在增加一个一个猫叫次数,ShoutNum的属性
public class Cat { private String name =""; private int ShoutNum=3; public Cat(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getShoutNum() { return ShoutNum; } public void setShoutNum(int shoutNum) { ShoutNum = shoutNum; } public Cat() { this.name= "没想好"; } public String Shout(){ return "我是"+name+"喵"; } }
public修饰的是共有的,private修饰的是私有的。
我们在声明ShoutNum的时候,还产生了一个'get'方法和一个'set'方法:
get方法返回与声明相同的数据类型,表示调用时可以访问内部的字段的值或者引用。
set没有返回值的类型,只有一个隐式参数(括弧里的),用来接收传进的参数,即调用时可以给该属性赋值。
为什么用private声明的还需要有set方法呢?
因为就像一个家来说,public就是没有墙,谁都可以进。private就是四周都是墙,进不去出不来,这是不可以的,所以有了get和set方法,用来进行空气阳光神马的流通。
下面做个方法用来控制叫声次数,控制它最多叫10声:
public class Cat { private String name =""; private int shoutNum; public int getShoutNum() { return shoutNum; } public void setShoutNum(int Num) { if(Num>10) shoutNum=10; else this.shoutNum = Num; } public Cat(String name) { this.name = name; } public Cat() { this.name= "没想好"; } public String Shout(){ for(int i = 0;i<shoutNum;i++) { System.out.println("喵"); } return "我是"+name; } }
public class CatShout { public static void main(String[] args) { Cat cat = new Cat("咪咪"); cat.setShoutNum(11); System.out.println(cat.Shout()); } }
封装
封装可以减少耦合性,什么是耦合性?
藕,有藕断丝连只说,耦合性就是说两者直接的关系,一个变动影响了另一个,这样的影响越大,则说明耦合性越强。
封装可以实现内部的自由改动。
封装具有清晰的对外口。
就像刚才我们把Cat提取出来,在内部进行改动,在main方法中没有改动什么,在Cat方法中就有set和get让外界调用。
那么咱们来创建一个狗Dog叫的功能,嗯……很简单,仿写Cat就好了:
package demo; public class Dog { private String name =""; private int shoutNum; public int getShoutNum() { return shoutNum; } public void setShoutNum(int Num) { if(Num>10) shoutNum=10; else this.shoutNum = Num; } public Dog(String name) { this.name = name; } public Dog() { this.name= "没想好"; } public String Shout(){ for(int i = 0;i<shoutNum;i++) { System.out.println("汪"); } return "我是"+name; } }
package demo; public class CatShout { public static void main(String[] args) { Cat cat = new Cat("咪咪"); cat.setShoutNum(3); System.out.println(cat.Shout()); Dog dog = new Dog("旺旺"); dog.setShoutNum(3); System.out.println(dog.Shout()); } }
但是有没有发现Dog和Cat的代码有很多相似的地方,或者说基本没啥不一样吗?
下一篇文章给予解释和相关代码。
相关文章推荐
- 面向对象04-java基础
- 面向对象语言基础 一
- 【JAVA学习笔记】面向对象基础
- 黑马程序员------Java基础(面向对象和基本特性)
- 《面向对象基础:C++实现》学习笔记之六
- Java基础4_面向对象下4接口和匿名类
- 面向对象基础5
- 黑马程序员-IOS-OC基础-面向对象语法三
- 面向对象基础
- JAVA基础学习(七)---面向对象三---继承,接口与 抽象类
- Java基础之面向对象基础知识整理——类和对象
- JavaScript面向对象基础
- GIS学习之面向对象基础
- PHP面向对象基础知识总结(2012-07-11)
- 第十七天 面向对象基础
- 基础学习day07---面向对象三---继承,接口与 抽象类
- C# VS 面向对象基础(一)
- Java篇--面向对象基础1
- js面向对象学习笔记之七(函数 与 基础控制结构)
- 面向对象基础指数(6)重构 集合 拆装箱 泛型