Java对象与类

一、面向对象概述

  • 当今主流的程序设计范型:面向对象程序设计(object-oriented programming,OOP)。

  • 面向对象的程序是由对象组成的,每个对象包含对用户公开的特定功能部分和隐藏的实现部分。

  • 类:

    • 类(class)是构造对象的模板或蓝图。

    • 类(construct)构造对象的过程称为创建类的实例

  • 类之间的关系:

    • 依赖(“uses-a”):一个类的方法使用或操纵另一个类的对象。

    • 聚合(“has-a”):类A的对象包含类B的对象。

    • 继承(“is-a”):一个更特殊的类与一个更一般的类之间的关系。

  • 对象:

    1. 使用OOP,一定要清楚的三个主要特性:
    • 对象的行为:可以对对象完成哪些操作,或者可以对对象应用哪些方法?

    • 对象的状态:当调用哪些方法时,对象会如何响应

    • 对象的表示如何区分具有相同行为状态不同对象

    1. 要想使用对象,首先必须构造对象,并指定其初始状态。然后对对象应用方法
  • 构造器:

    • 构造器与类同名

    • 每个类可以有一个以上的构造器。

    • 构造器可以有0个1个多个参数

    • 构造器没有返回值

    • 构造器总是伴随着new操作符一起调用。

    • 不能对一个已经存在的对象调用构造器来达到重新设置实例字段的目的。

  • 方法参数:

    • Java程序设计语言总是采用按值调用的方式。

    • 两种类型的方法参数:即基本数据类型对象引用

    • this关键字指示隐式参数,也就是所构造的对象。

  • 静态字段与静态方法:

    • 将一个字段定义为static,表示:它属于类,而不属于任何单个的对象。

    • 静态方法是不在对象上执行的方法,静态方法可以访问静态字段。

  • 对象构造与重载:

public class Sample {
    
    // 无参构造
    public Sample() {

    }

    public static void method() {
        System.out.println();
    }

    public static void method(int a) {
        System.out.println(a);
    }

    public static void method(String str) {
        System.out.println(str);
    }


    public static void main(String[] args) {
        // 实例化无参构造
        Sample sample = new Sample();

        // 重载:多个方法,相同方法名,不同的参数。
        // 签名:方法名 + 参数类型。
        // 注:不能有签名完全相同却有不同返回类型的方法。
        method();
        method(1);
        method("str");
    }

}
  • 更改器与访问器:
public class Sample {

    private int number;

    // 更改器
    public void setNumber(int number) {
        this.number = number;
    }

    // 访问器
    public int getNumber() {
        return number;
    }


    public static void main(String[] args) {
        // 构造对象
        Sample sample = new Sample();
        // 调用字段更改器
        sample.setNumber(1);
        // 调用字段访问器
        System.out.println(sample.getNumber()); // print 1
    }

}
  • 初始化块:
public class Sample {

    private Sample() {

    }

    private int number;

    {
        number += 1;
        System.out.println("初始化块:只要构造这个类的对象,就会被执行。");
    }

    static {
        // doSomething...
        System.out.println("静态初始化块:关键字static,如果类的静态字段需要很负载的初始化代码,则可以使用。");
    }


    public static void main(String[] args) {
        Sample sample = new Sample();
        // print 静态初始化块:...
        // print 初始化块:...
    }

}

二、类设计的技巧

  1. 一定要保证数据私有

  2. 一定要显式地初始化所有的数据

  3. 不要在类中使用过多的基本类型

  4. 不是所有的字段都需要单独的访问器更改器

  5. 分解过多职责的类

  6. 类名和方法名要能够体现它们的职责,类名应当是一个名词如Order,或者是前面有形容词修饰的名词如RushOrder,或者是有动名词如“-ing”后缀修饰的名词。

  7. 优先使用不可变类,如果多个线程试图同时更新一个对象,就会发生并发更改,其结果是不可预料的。所以使用不可变类,就可以安全地在多个线程间共享对象。

三、结束语


“-------怕什么真理无穷,进一寸有一寸的欢喜。”

微信公众号搜索:饺子泡牛奶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值