Java 封装与构造函数

版权声明:欢迎交流,转载请注明出处。 https://blog.csdn.net/u013034226/article/details/45065273

面向对象思想思想的三个特征:封装,继承,多态。

封装:

表现:函数就是一个最基本的封装体,类也是一个封装体。
  好处:1、提高了代码的复用性,
     2、隐藏了实现细节,可以对外提供可以访问的方法,便于调用者的使用。
     3、提高了安全性。
下面通过私有化(private)来对封装进行理解:
class Person
{
         //属性:
         private int age;    //age被修饰为了私有
         //行为:
         void speak()
         {
                 System.out.println("age="+age);
         }
}
年龄已被私有,错误的值无法赋值,可是正确的值也赋值不了,需要提供访问方式。

对变量的访问操作有两个动作:赋值(设置 set),取值(获取 get)
所以,对私有的变量访问的方式就是 setAge  getAge
//定义对age赋值的方法。
void setAge(int a)
{
        age = a;
}
//定义一个获取age值得方法。
int getAge ()
{
       return age;
}
(以后再描述事物,属性都私有化,并提供setXxx  getXxx方法对其进行访问。)
记住:私有仅仅是封装的体现形式而已。

构造函数:

为了描述事物更准确,发现事物对应的很多对象一创建时,就有了一些初始化的数据。这需要通过“构造函数来完成”。
构造函数怎么在代码中体现?
1、没有返回值类型。因为构造对象,创建完就结束,不需要结果,void也不要写,。
2、构造函数名称和类名一致。
3、没有具体的返回值。
在Person类中定义一个构造函数
class Person
{
	//属性:姓名,年龄。
	private String name;
	private int age;
	//一初始化,既没有姓名,又没有年龄。
	Person()
	{
		
	}




	//定义构造函数,对象一创建就具备姓名。
	Person(String n)
	{
		//将接收到的值赋值给对象的name
		name = n;
	}

	//一初始化既有姓名,又有年龄。
	Person(String n,int a)
	{
		name = n;
		age = a;
		
	}
	
	//行为。
	public void speak()
	{
		System.out.println("name="+name+",age="+age);
	}
}


class PersonDemo2 
{
	public static void main(String[] args) 
	{

		
	Person p = new Person("lisi");//对象创建时,必须会调用对应的构造函数,因为对象需要初始化。
	
//		Person p2 = new Person("wangwu",23);
		
	}
}

构造函数的细节:
1,一个类中可以有多个构造函数,它们的存在是以重载的形式体现的。
2,构造函数中也是有return语句的,用于结束初始化动作的。
3,构造函数是否能被private修饰呢?能,作用:其他程序无法创建该类的对象。

构造函数和一般函数的区别?
1,写法不一样。
2,运行上有差别,对象一创建就会调用对应的构造函数。
一般方法是对象创建后,才会调用所需的一般函数。
问:有了构造函数初始化姓名,那么还需要setName方法吗?
需要,因为对象创建后,如果需要对数据进行修改,可以通过set完成。
3,构造函数在对象创建时,仅调用一次(初始化动作只做一次,而且先执行)。
一般方法可以被对象调用多次。          

猜你喜欢

转载自blog.csdn.net/u013034226/article/details/45065273
今日推荐