#对象与类 局部变量与全局变量

#对象与类 局部变量与全局变量

##面向对象(Object Oriented,OO)

  • 面向对象(Object Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术[1]发展到一定阶段后的产物。核心特性包括:类,对象,方法,封装,继承和多态。

#

##1.类是什么

  • 类是面向程序程序设计实现信息封装的基础。

  • 具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。

  • 类是一种抽象的概念。

  • 对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

  • 类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。

##2.如何编写一个java类

  • 通过class关键字来创建一个类 如下
public  class  Pratice{
//public---访问限制修饰符(对类的访问权限)
//class---创建类的关键字(类的标志)
//Pratice--类名(首字母大写)}
  • 格式 访问限制修饰符 class 类名{} 如下
public class Practice{  }
final class  Programmer{  }
class User{  }

##3.Java类中可以编写什么

  • 拿杯子举个例:杯子-----名字 形状 大小 颜色 装东西
    名字,形状,大小,颜色-----基本属性
    装东西-----基本功能

  • 通过事物的基本属性和基本功能来描述具有共同性质的一组事物。
    基本属性------变量
    基本功能-----方法
    变量–是用来在类中描述事物的基本属性
    方法–是用来在类中描述事物的基本功能

##4.类的三大特性

  • 封装性

    将数据和操作封装为一个有机的整体,由于类中私有成员都是隐藏的,只向外部提供有限的接口,所以能够保证内部的高内聚性和与外部的低耦合性。用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员,能够增强安全性和简化编程。

  • 继承性

​ 继承性更符合认知规律,使程序更易于理解,同时节省不必要的重复代码。

  • 多态性

    同一操作作用于不同对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向父类(基类)的指针,来调用实现子类(派生类)中的方法。

#对象

##1.对象是什么

  • 通过java类所产生的实体。

  • 对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。

  • 对象是一种具体的概念。

##2.如何通过Java类得到对象

  • 通过new + 构造方法就可以得到一个类的对象。
  • 类中的构造方法就是为了创建对象而存在的。

##3.通过Java类创建的对象可以做什么

  • 可以在其他类的构造方法中访问该类的变量;
  • 可以在其他类的实例方法中访问该类的变量;
  • 可以在其他类的类方法中访问该类的变量;
  • 可以在其他类的方法中访问该类的方法;

如下

public class Student {
    public  Student(){
        System.out.println("Student类的构造方法");
    }
    public void  testStudent(){
        System.out.println("student类的实例方法");
    }
    public  static void  testStaticStudent(){
        System.out.println("student类的类方法");
    }
}

#类与对象的关系

  • 类与对象的关系就如模具和铸件的关系,类的实力化的结果就是对象,而对对象的抽象就是类,类描述了一组有相同特性(属性)和相同行为的对象。

    解释的通俗一点就是,人是一种类,而具体的某一个人就是一个对象,每一个对象都符合这个类型的标准。

    一个类的所有对象都有相同的属性(都是人类),但有不同的属性值(名字、身高不一样等),不同的类的属性不完全相同。

#局部变量

  • 定义:定义在方法中的变量都是局部变量(main方法也是方法,所以定义在main方法中的变量也是局部变量)。
  • 生存时间:局部变量的生存时间和方法的生存时间一致,调用该方法声明该局部变量并初始化的时,该局部变量被创建并分配内存空间;直到该方法调用结束局部变量也就结束了。
  • 是否需要初始化:局部变量在使用前必须进行初始化,系统默认不会对局部变量进行初始化数据操作,如果局部变量在使用前没有进行初始化则会在编译器报错;如果局部变量进行了声明没有进行初始化, 但是也一直没有被使用的话编译也是不会报错的(局部变量使用前必须初始化)。

#全局变量

##非静态全局变量

  • 定义:非静态全局变量都是定在类中,是类的成员变量或者说是成员属性属于类的一部分(或者说是对象的一部分)。
  • 生存时间:非静态全局变量加载在堆内存中,随着声明初始化而创建,随着对象消亡而消亡。
  • 是否需要初始化:全局变量都是不需要被强制初始化的,系统都会默认根据其数据类型进行默认赋值;但是建议在声明时都进行初始化操作。

##静态全局变量

  • 定义:静态的类成员变量。
  • 生存时间:静态全局变量随着类的字节码文件加载而加载产生,随着字节码文件的消失而消失,生存时间比类的 对象还要长。
  • 是否初始化:凡是全局变量都是可以不要初始化的,静态变量也是一样,系统会自动根据其数据类型进行赋默认值,但是建议变量在声明时都进行初始化。

如下

import java.util.Scanner
public class Practice {
    public static int sum(int a) {
        int b = 2,c = 0;	//a,b,c仅在函数sum()内有效
        return a + b + c;
    }
    public static void main(String[] args) {
        int m,n;	//m,n仅在函数main()内有效
        Scanner sc = new Scanner(System.in);
        m = sc.nextInt();
        n = sum(m);
        System.out.println("n=" + n);
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值