码迷,mamicode.com
首页 > 其他好文 > 详细

12_面向对象之类成员之成员变量

时间:2020-09-24 22:10:00      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:推荐   ati   密码   vat   main   服务   创建对象   pre   需要   

12_面向对象之类成员之成员变量


? 面向对象是一种编程思想, 基于面向过程. 关于面向对象思想的论述有很多, 这里不再给出. 只从个人角度出发狭隘的给出一种理解. 我认为java中的面向对象就是通过抽象的方式规纳出不同的类, 将相关的属性和完成的功能作为类的成员, 程序需要某部分功能时可以直接通过类名或创建对象调用已经完成好的功能即可. 面向对象的目的就是为了调用已实现好的方法.不用我们自己再"造轮子".

? java中的面向对象的体现就是类, 类是java语言中的基本单位. 当程序在运行时根据类创建出相关的对象, 通过对象调用方法. 所以, java面向对象的核心就是类. 类是java对现实世界的模拟和抽象, 在类的创建时, 我们只关心对程序和功能有用的部分, 而不是对事物的全部抽取. 比如说需要做一个银行帐户管理系统, 会用到客户, 我们把客户抽象为类时只需要关心它的帐号密码余额等与银行相关的东西, 而对客户的身高, 学历等方面就不需要关心.

? java中类最重要的组成部分为属性(成员变量)和行为(成员方法), 同时, 为了语言的强壮和完整性, 类中还有构造器, 代码块, 内部类这三种成员. 所以java类成员总共有五种.

1. 类的定义

java中类的定义有特定的格式, 通过class关键字申明.其成员并非是五个都必须同时具有, 可根据具体情况而定.

修饰符(可省) class 类名(标识符) {
	成员变量;
	成员方法;
	构造器;
	代码块;
	内部类;
}
//类的定义
public class Customer {

}

2. 成员变量定义

在有了成员变量的概念后, 我们要区别与以前在方法内定义的变量(局部变量), 稍候会进行全面的对比.

  1. 定义格式: 与定义局部变量在语法上是相同的
  2. 定义位置: 与局部变量(方法内部)不同, 成员变量的位置为类中方法外
/**
 * 定义一个银行系统的客户类
 * 		属性: 帐户 余额(部分)
 */
public class Customer {
	String username;	//成员变量定义
    double balance;	
}

3. 成员变量使用

成员变量在定义之后, 我们可以对其进行赋值, 获取,修改值等操作. 由于成员变量的具体值是属于每个对象的, 所以对成员变量的操作需要通过对象.

3.1 成员变量的赋值(修改值)

  1. 非私有成员变量可直接通过对象赋值
  2. 私有成员变量可以通过setXxx() 方法赋值
//成员变量赋值
customer.username = "Tom";  //成员变量直接赋值
customer.setBalance(20000.00); //setXxx方法赋值

3.2 成员变量的获取

  1. 非私有成员变量可直接通过对象获取值
  2. 私有成员变量可以通过getXxx() 方法赋值
 //成员变量获取
 String username = customer.username;    //非私有直接获取
 double balance = customer.getBalance(); //私有通过getXxx方法获取

完整Demo

package c_oop.b_class;

/**
 * 成员变量的使用
 */
public class ClassDemo04 {
    public static void main(String[] args) {
        Customer customer = new Customer();

        //成员变量赋值
        customer.username = "Tom";  //成员变量直接赋值
        customer.setBalance(20000.00); //setXxx方法赋值

        //成员变量获取
        String username = customer.username;    //非私有直接获取
        double balance = customer.getBalance(); //私有通过getXxx方法获取
        System.out.println("帐户名: " + username);
        System.out.println("余额: " + balance);


    }
}

//定义一个类
class Customer {
    String username;
    private double balance;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }
}

4. 成员变量分类

4.1 根据有无static修饰

成员变量根据有无static关键字修饰, 可分为静态成员变量非静态成员变量

  1. 静态成员变量随类的加载而加载, 先于对象, 可直接用类名调用, 也可用对象调用(不推荐)
  2. 非静态成员变量随对象的创建而加载, 后于类, 只能用对象调用
package c_oop.b_class;

/**
 * 静态成员变量与非静态成员变量
 */
public class ClassDemo02 {
    public static void main(String[] args) {
        //测试静态成员变量与非静态成员变量的调用
        Customer customer = new Customer(); //创建对象

        String bankName = Customer.bankName;    //类名直接调静态成员变量
        System.out.println("银行名: " + bankName);
        String bankName2 = customer.bankName;   //对象名调静态成员变量(可以, 但是不推荐)
        System.out.println("用户的银行名:" + bankName2);

        //String username = Customer.username;    //类名不可直接调非静态成员
        String username = customer.username;
        System.out.println("用户帐户: " + username);
    }
}
/**
 * 定义一个银行系统的客户类
 * 		属性:
 * 	    	银行名称(静态)
 * 	    	帐户
 * 	    	余额
 */
class Customer {
    static String bankName = "Bank Of China"; //静态成员变量
    String username = "Tom";	//非静态成员变量
    double balance;
}

4.2 根据有无final修饰

成员变量可根据有无final修饰分为成员常量成员变量, 成员常量这个词是为了对比这样说的, 并不是官方的说法, 可以根据这样理解, 有不严谨的地方还请原谅, 毕竟也不是写书, 理解才是最重要的.

  1. 成员常量: 被final关键字修饰的成员变量, 其特点为只可赋值一次, 赋值后其值再不能被修改.
  2. 成员变量: 无final修饰, 前面讨论的成员变量都是此类型

/**
 * 定义一个银行系统的客户类
 * 		属性:
 * 	    	银行名称(常量)
 * 	    	帐户
 * 	    	余额
 */
class Customer {
    final String bankName = "Bank Of China"; //成员常量
    String username = "Tom";	//成员变量
    double balance;
}

package c_oop.b_class;

/**
 * 成员常量和成员变量测试 
 */
public class ClassDemo03 {
    public static void main(String[] args) {
        Customer customer = new Customer();//创建对象

        //调用成员常量
        String bankName = customer.bankName;
        System.out.println("银行名: " + bankName);
        //customer.bankName = "ACBC";     //不可修改, 程序报错

        //调用成员变量
        String username = customer.username;
        System.out.println("帐户名: " + username);
        customer.username = "Jerry";    //可以修改
        username = customer.username;
        System.out.println("修改后帐户名: " + username);

    }
}
/*
测试结果:
	银行名: Bank Of China
	帐户名: Tom
	修改后帐户名: Jerry
*/

5. 成员变量与局部变量区别

区别 成员变量 局部变量
类中位置不同 类中方法外 方法内部或声明上
内存中的位置
生命周期不同 随着对象存大 随着方法调用而存在
初始化值不同 有默认初始值 无默认值,先赋值后使用

6. 总结

根据个人理解, 类中最重要的组成部分是成员方法, 许多方法都用到的变量考虑设置为成员变量, 或者是类固有的属性设置为成员变量. 总体而言, 成员变量主要是用来为成员方法服务的, 所以在设计成员变量时与成员方法综合考虑, 整体设计.

12_面向对象之类成员之成员变量

标签:推荐   ati   密码   vat   main   服务   创建对象   pre   需要   

原文地址:https://www.cnblogs.com/coder-Joe/p/13725100.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!