面向对象基础(2)

属性与修饰符

属性是用来表示一个方法或者对一个方法的字段,方便进行调用,字段是与类相关的变量。

比如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的代码有很多相似的地方,或者说基本没啥不一样吗?

下一篇文章给予解释和相关代码。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值