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 产生随机数的类

Java学习笔记--类和对象的更多相关文章

  1. 《python基础教程(第二版)》学习笔记 类和对象(第7章)

    <python基础教程(第二版)>学习笔记 类和对象(第7章) 定义类class Person:    def setName(self,name):        self.name=n ...

  2. scala学习笔记——类和对象

    基础语法关于Scala程序,这是非常要注意以下几点. 区分大小写 - Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义. 类名 - 对于所有的类名的第一个字 ...

  3. Java学习笔记之类和对象

    1.类是对象的抽象,对象是类的实例. 2.一个.java 文件,只能有一个公有类. 3.Java的默认访问权限是:default,即不加任何访问修饰符,该权限设置只能在同一包访问.   当前类 同一包 ...

  4. java 学习笔记——类之间的关系之封装、继承与多态的详解

    封装 一个封装的简单例子 封装就是把对象的属性(状态)和方法(行为)结合在一起,并尽可能隐蔽对象的内部细节,成为一个不可分割的独立单位(即对象),对外形成一个边界,只保留有限的对外接口使之与外部发生联 ...

  5. java学习笔记3--类与对象的基础

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note3.html,转载请注明源地址. 1.面向对象的程序设计方法概述 面向对象的程序设计 与 ...

  6. Java 学习笔记(8)——匿名对象与内部类

    一般在编写代码时可能会遇到这样的场景--在某些时候,我需要定义并某个类,但是只会使用这一次,或者是某个类对象只会使用一次,为它们专门取名可能会显的很麻烦.为了应对这种情况,Java中允许使用匿名对象和 ...

  7. Python学习笔记——类和对象

    类和对象 1. 一个例子 # 对象 = 属性 + 方法 # Python 中的类名称约定首字母大写,而 Python 函数名首字母小写 class Turtle: #属性 color = 'green ...

  8. 【Java学习】类、对象、实例—类是对象的抽象,对象是类的实例

    类.对象.实例的关系是什么,如果不能很好的理解什么是类什么是对象就无法讲清楚, 类:某种事物与另一种事物具有相似性,比如哈士奇和泰迪,我们发现他们有一些相似的特性和行为,在生物学上,他们都属于“狗”, ...

  9. 【Java学习笔记】其他对象API

    System类 package p1; import java.util.Properties; import java.util.Set; public class SystemDemo { pri ...

随机推荐

  1. ss3

    1)执行如下命令,进行安装shadowsocks(命令需要一条条的输入,然后回车,执行完一条,在执行下一条命令),过程中可能会让你选择确认的地方,直接输入"y"回车即可: yum ...

  2. 转载:IntelliJ IDEA 2016.2 配置Tomcat 运行Web项目

    以前都用MyEclipse写程序的 突然用了IDEA各种不习惯的说 借鉴了很多网上好的配置办法,感谢各位大神~ 前期准备 IDEA.JDK.Tomcat请先在自己电脑上装好 好么~ 博客图片为主 请多 ...

  3. python 基础 列表 小例子

    存主机ip到列表 host_list=[] netip='192.168.1' for hostip in range(1,254): ip = netip +str(hostip) host_lis ...

  4. Spring入门第二十六课

    Spring中的事务管理 事务简介 事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性. 事务就是一系列的动作,他们被当做一个单独的工作单元,这些动作要么全部完成,要么全部不起 ...

  5. 23. CTF综合靶机渗透(十六)

    靶机说明: VM Name: JIS-CTF : VulnUpload Difficulty: Beginner Description: There are five flags on this m ...

  6. 15. Bypass 360主机卫士SQL注入防御(多姿势)

    在服务器客户端领域,曾经出现过一款 360 主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影. 从半年前的测试虚拟机里面,翻出了 360 主机卫士 Apache 版的 ...

  7. 高性能服务器设计(Jeff Darcy's notes on high-performance server design

    高性能服务器设计(Jeff Darcy's notes on high-performance server design 我想通过这篇文章跟大家共享一下我多年来怎样开发“服务器”这类应用的一些想法和 ...

  8. BOX (UVA-1587) 比较代码书写上的差距

    对比一下代码的书写差距: 我的代码: #include<iostream> using namespace std; ]; ]; ]; //访问标记 bool judge(int i, i ...

  9. Boost Python学习笔记(四)

    你将学到什么 在Python中调用C++代码时的传参问题 基础类型 Python的字符串是常量,所以C++函数参数中的std::string &必须为const 修改源文件(main.cpp) ...

  10. CEPH安装教程(下)

    创建 CEPH 文件系统 创建存储池 # ceph osd pool create cephfs_data 64 # ceph osd pool create cephfs_metadata 64 创 ...