Java基础04 - 面向对象1(类与对象)

1 概念与定义

类(class)用于描述客观世界里某一类对象的共同特征,类是这一类对象的抽象。
对象(object)是一个具体存在的实体,是类的具体实例(instance)。

// 类的定义
/**
 * 修饰符:public,  final,  abstract
 * 类名:每个单词首字母大写,其余小写,见名知意
 */
[修饰符] class 类名
{
    // 零到多个构造器定义;
    // 零到多个成员变量定义;
    // 零到多个方法;
}
// 类
class Person {
    public String name;
    public int age;
    public void say() {
        System.out.println("Hello! My name is " + name + 
                ". I'm " + age + " years old.\n");
    }
}

// p1是引用变量,存储在栈内存区
Person p1;
p1 = new Person();
p1.say();

// new完成后返回的实例存储在堆内存区,p2引用指向该实例
Person p2 = new Person();
p2.name = "haha";
p2.age = 18;
p2.say();

// p1和p2同时指向堆内存中的同一个实例
p1 = p2;

// 如果希望通知垃圾回收机制回收某个对象,只需切断该对象的所有引用变量和它之间的关系
p1 = null;
p2 = null;

2 构造器

(1) 构造器最大的用处就是在创建对象时执行初始化。
(2) 构造器是一个类创建对象的根本途径,Java通过关键字new来调用构造器。当一个类没有构造器时,系统会给该类提供一个无参的默认构造器。一旦程序员为一个类提供了一个构造器,系统将不会为该类提供构造器。
(3) 构造器不能定义返回值类型,也不是使用void声明构造器没有返回值。
(4) 构造器可以重载。同一个类里可以有多个构造器,多个构造器的形参列表必须不同。

// 构造器的定义
/**
 * 修饰符:public, protected, private,也可以省略。因为构造器主要用于被其他方法调用,用以返回该类的实例因而通常把构造器设置成public访问权限
 * 构造器名:必须和类名相同
 * 形参列表:由零组到多组“参数类型 形参名”组成,多组参数之间以逗号隔开
 */
[修饰符] 构造器名(形参列表)
{
    // 零到多条可执行性语句组成的构造器执行体
}
// 构造器的重载
class Apple {
    public String name;
    public String color;
    public double weight;

    // 构造器1
    public Apple() {}

    // 构造器2
    public Apple(String name) {
        this.name = name;
    }

    // 构造器3
    public Apple(String name, String color) {
        this.name = name;
        this.color = color;
    }

    // 构造器4 完全包含构造器3的执行体,可通过this调用构造器3
    // 通过this调用其他构造器时,必须作为构造器执行体的第一条语句
    public Apple(String name, String color, double weight) {
        this(name, color);
        this.weight = weight;
    }
}

3 成员变量

/**
 * 修饰符:public, protected, private, static, final, 也可以省略
 * 类型:Java允许的任何数据类型,包括基本类型和引用类型
 * 成员变量名:合法标识符,第一个单词首字母小写,后面单词首字母大写,其他字母小写,单词之间不要分隔符
 * 默认值:定义成员变量时可以指定一个可选的默认值
 */
[修饰符] 类型 成员变量名 [=默认值];

4 方法

/**
 * 修饰符:public, protected, private, static, final, abstract
 * 方法返回值类型:Java允许的任何数据类型,包括基本类型和引用类型。如果没有返回值,必须使用void声明
 * 方法名:合法标识符,建议英文动词开头
 * 形参列表:由零组到多组“参数类型 形参名”组成,多组参数之间以逗号隔开。谁调用方法,谁负责为形参赋值
 */
[修饰符] 方法返回值类型 方法名(形参列表)
{
    // 零到多条可执行性语句组成的方法体
}

5 this指针

(1) this指针作为对象的默认引用有两种情形:
- 在构造器中引用该构造器正在初始化的对象;
- 在方法中引用调用该方法的对象;
(2) this的最大作用就是让类中的一个方法访问类中的另一个方法或实例变量。
(3) 如果方法里有局部变量和成员变量同名,可以使用this指针区分引用。

6 static

(1) static修饰的成员表明该成员属于类本身,而不属于该类的单个实例。因此,通常把static修饰的成员叫做类/静态变量,类/静态方法。
(2) 不使用static修饰的成员属于该类的单个实例,而不属于类本身。因此,通常把不使用static修饰的成员叫做实例/非静态变量,实例/非静态方法。
(3) 对于static修饰的方法,可以使用类直接调用该方法,也可以使用实例对象来调用该方法(极不推荐)。
(4) 如果在static修饰的方法中使用this指针,那么this无法指向合适的对象,所以static修饰的方法中不能使用this引用。由于static修饰的方法中不能使用this引用,所以static修饰的方法不能访问不使用static修饰的普通成员。因此,static修饰的成员(静态成员)不能访问没有static修饰的成员(费静态成员)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值