• Java学习笔记--类和对象


     

     

    1.介绍面向对象的编程

             面向对象是现在主流的编程样例,它替代了以前C语言使用时的“结构体”,Java是一门面向对象的语言,所以需要熟悉面向对象的概念。面向对象的程序由很多对象组成,每个函数对于用户而言,都有特殊的功能。程序里面的很多对象都可以直接从公共库里面拿来直接用。不用去研究这些功能怎么去实现的。传统的结构的编程由一系列算法步骤来解决问题。一旦这些步骤确定下来,也要同时确定存储数据的方式。也就是数据结构一开始学习的:算法+数据结构=程序。
    先决定算法,再决定使用什么样的结构来存储数据,此时比较利于解决小的问题,但是遇到大的问题就要使用面向对象的方法。
    使用原本的方法,全局的数据按照程序的步骤来存储,如果发现数据有问题,就要一步一步去找。但是如果是存在对象里面,然后通过方法来操作这些数据,只需要从这些方法那边去找就能找到数据。
            类就是对象生成的蓝图,当你通过类生成一个对象,也可以说是创造了类的一个实例。在类中写代码,而且标准的Java库中有上千种类,用于不同的目的,比如用户接口,日期和日历,网络编程。此外,你可以根据你所要解决的问题,创造自己的类来描述对象。
    封装是类思想中一个很重要的概念,对用户而言,封装将数据和行为存在一个包里面,隐藏了实现的细节。存储数据的地方成为实例区,对数据的操作称为方法,这些就是对象的一个状态,当你唤醒一个对象的类时,这些状态就会改变。封装最重要的思想就是有了方法,通过方法来访问数据,禁止直接访问类的数据区和其他地方,使得对象看起来像个黑盒,这样才是可重用的和可靠的。这意味着类完全改变了存储数据的方式。

    2.类

    例子:比如
    public class Circle {
    	private static double radius;
    	private static double PI = 3.14159;
    	public void SetTheRadius(double r){
    		radius = r;
    	}
    	public double GetTheArea()
    	{
    		return PI*radius*radius;
    	}
    }
    
    对象的状态定义为数据区的值,上述例子中的Circle的例子,其中有半径作为它的状态,半径有很多种,可以通过相面方法来改变值。相同类的对象,用公共类来定义,然后可以生成对象,有不同的圆,也就可以设置不同的值。例如
    1.Class Name: circle1 
        Data Field:
    radius = 10;
    2. Class Name :Circle2
    Data Field 
    radius = 15:
    也就是说用上面的圆类生成了两个圆的对象,其中这两个圆的半径分别为10 和 15,不过例子中的类没有main 函数,所以说不能够运行。
    以后在使用类和对象可以按照下面的构造函数和方法:
    构造函数的名字和类的名字一样
    ClassName(parameterName : parameterType)
       方法:
    methodName(parameterName: parameterType) returnType

    3. 使用构造函数来构造对象

           构造函数是一种特殊的方法:
    1 构造函数的命名和类的名字一样
    2      构造函数没有返回类型—(void是返回为空)所以不是void 
    3 创造对象的时候构造函数使用了new操作,构造函数用于初始化对象
    例如上面的圆的例子
    public class Circle {
    	private static double radius;
            Circle(){
                radius = 0; }
    }
    在上面的例子中的初始化操作为
     
    Circle object1 = new Circle();
     
    在这个例子中,生成对象的时候调用了new 操作,如果说在上面的Circle()构造前加入了void 此时就变成了方法

    4通过方法来传递参数

    如果要修改每个对象的状态,也就是数据区时,可以通过方法来修改,或者是得到数据。
    例子
    class Student {
    String name; // name has default value null
    int age; // age has default value 0
    boolean isScienceMajor; // isScienceMajor has default value false
    char gender; // c has default value 
    }
    上述这个关于学生的类,其中的状态就是学生的姓名,年龄,是不是选修科学,性别,然后可以通过方法来修改这些状态,或者得到这些值
    public void SetTheName(String na){
    		name = na;
    	}
    public String GetTheName(){
            return name;
    }
    其他的状态修改类似,可以按照如下的例子来使用
    public class ComputeAreaaa {
    	public static void main(String[] args){
    	Circle object1 = new Circle();
    	object1.SetTheName("Harker'Circle");
    	System.out.println("The name of the Cirlce is "+object1.GetTheName());
    	}
    }
    此时看看console 写了什么
     
     小结: 这个可以归为一类的问题:
    我们为了解决某个问题定义了一个类,然后生成了一个对象,其中调用某些方法来修改对象的状态(数据区的值),其实也很像状态量和控制量的关系,一个描述我们遇到的客体,然后另一个量来修改状态,此时也可以想象生活中的例子:TV,电视有个状态是 ON或者是OFF,这两个状态要有某个操作能切换。

     Note 原始量和引用量的差异

    原始类型的数据 比如 int i = 1;
    对象类型的引用量,比如Circle C,此时里面的数据,比如半径,但是当你将一个变量赋值为另一个数的时候,会有以下的情况:
    执行c1 = c2 的操作:
    操作前:
     
    操作后:
     
    只是改变了C2所指向的内容。

    5使用Java库中的类

           可以使用Java库中本来就有的类:
    1 时间类 java.util.Date
    public class TimeClass {
    	public static void GetTime(){
    		java.util.Date date = new java.util.Date();
    		System.out.println("The elapsed time since Jan 1, 1970 is" + 
    	     date.getTime()+"milliseconds");
    		System.out.println(date.toString());
    	}
    }
    2 产生随机数的类
  • 相关阅读:
    Azure PowerShell (2) 修改Azure订阅名称
    Windows Azure Platform Introduction (11) 了解Org ID、Windows Azure订阅、账户
    Azure PowerShell (3) 上传证书
    Azure PowerShell (1) PowerShell入门
    Windows Azure Service Bus (2) 队列(Queue)入门
    Windows Azure Service Bus (1) 基础
    Windows Azure Cloud Service (10) Role的生命周期
    Windows Azure Cloud Service (36) 在Azure Cloud Service配置SSL证书
    Android studio 使用心得(一)—android studio快速掌握快捷键
    android 签名、混淆打包
  • 原文地址:https://www.cnblogs.com/rynerlute/p/6384158.html
Copyright © 2020-2023  润新知