二:深入分析类与对象

1、成员属性封装

          在类之中的组成就是属性和方法,一般而言,方法都是对外提供服务的,所以一般不会进行封装。而属性需要较高安全性,所以往往需要对其进行保护,此时就是成员属性的封装。

          在默认情况下,对于类中的属性是可以通过其它类利用对象进行调用,即类中的属性没有进行封装处理,那么外部的就可以利用对象对属性值进行修改,有可能会设置一些不合法的数据(错误的数据)。

          所以,在定义类的时候,为了属性的安全性,我们可以使用关键字:private进行封装。

          一旦使用了private关键字对属性进行了封装,那么该属性只对内部可见,对外部是不可见的。若想要让外部访问被封装的属性,则可以在定义类是进行setter()和getter()方法的设置。

          范例:标准的封装类

package cn.demos;

class Person {
	String name;// 姓名
	int age;// 年龄

	public void tell() {
		System.out.println("姓名:" + name + "、年龄" + age);
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		// 可对传入的年龄进行判断
		if (age >= 0) {
			this.age = age;
		}
	}
}

public class Demo1 {
	public static void main(String[] arge) {
		// 声明实例化对象
		Person person = new Person();
		// 利用set方法赋值
		person.setName("张三");
		person.setAge(18);
		person.tell();
	}
}

          注意:在以后进行定义类得时候,类中的属性一定要使用private关键字进行封装,被封装后的属性,一定要提供getter()和setter()两个方法以供外部类进行访问。

 

2、构造方法与匿名对象

          构造方法:通过构造方法实现实例化对象中的属性初始化处理。只有在关键词new的时候使用构造方法。

          构造方法的定义的要求如下:

                              1)方法名称与类名称保持一致;

                              2)构造方法不允许设置任何的返回值类型,即:没有返回值定义

                              3)构造方法是在使用关键词new实例化对象的时候自动调用的。

          范例:定义构造方法

有参构造无参构造(类中自带)

class Person {
    String name;// 姓名
    int age;// 年龄
    //有参构造
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

}

class Person {
    String name;// 姓名
    int age;// 年龄


    //无参构造
    public Person() {
        
    }

}

          注意:一个类中至少存在一个构造方法。

          构造方法与普通方法的区别:无返回值,且只在程序new的时候调用一次。

          范例:构造方法重载

class Person {
	String name;// 姓名
	int age;// 年龄
	//有参构造
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	//有一个参数

	public Person(String name) {
		super();
		this.name = name;
	}
	//无参构造
	public Person() {
		
	}
}

          注意:在定义多个构造参数的重载时,可以按照参数的降序或升序进行书写;构造方法传值与setter方法传值的区别在于,构造方法传值是在对象初始化时,而setter是在初始化之后对属性进行设值也可以修改属性值。

          2、匿名对象

          对象产生格式:

                    1)定义对象名称:类名称  对象名称 = null;

                    2)实例化对象:对象名  =  new   类名称();

          通过此种方式进行类得操作也可以,二这种形式没有名字就称为匿名对象。

          范例:观察匿名对象

代码结果

package cn.demos;

class Person {
    String name;// 姓名
    int age;// 年龄
    // 有参构造

    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }

    public void tell() {
        System.out.println("姓名:" + name + "、年龄" + age);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        // 可对传入的年龄进行判断
        if (age >= 0) {
            this.age = age;
        }
    }
}

public class Demo1 {
    public static void main(String[] arge) {
        new Person("张三", 18).tell();
        ;
    }
}

姓名:张三、年龄18

          通过对以上程序的观察,此时依然通过了对象进行类中tell()方法的调用,但是由于此对象没有任何的引用名称,所以该对象使用一次之后就将称为垃圾,而所有的垃圾将被GC进行回收与释放。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值