二:深入分析类与对象

    科技2025-12-26  12

    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进行回收与释放。

     

    Processed: 0.026, SQL: 9