Java 作为一种面向对象语言,支持以下基本概念:

  • 多态
  • 继承
  • 封闭
  • 抽象
  • 对象
  • 实例
  • 方法
  • 重载

对象: 是类的一个实例,有状态和行为。以人为例,黄种人、白种人、黑种人为类,每一个具体的人为类的对象。

类:   它描述一类对象的行为和状态。

软件对象的状态就是属性,行为通过方法体现。

在软件开发中, 方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。

一个类可以包含以下类型变量:

  • 局部变量: 在方法、构造方法或语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量会自动销毁。
  • 成员变量:定义在类中、方法体之外的变量被称为成员变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定烦的语句块访问。
  • 类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。

一个类可以有多个方法。如barking()、hungry()、sleeping()都是Dog类的方法。

构造方法

每个类都有构造方法,如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。

在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

 //构造方法示例:

 public class Puppy{
public Puppy(){
} public Puppy(String name){
}
}

创建对象

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。 创建对象需要以下三步:

  • 声明: 声明一个对象,包括对象名称和对象类型。
  • 实例化: 使用关键字new来创建一个对象。
  • 初始化: 使用new创建对象时, 会调用构造方法初始化对象。
 //创建对象的例子:

 public class Puppy{
public Puppy(String name){
//这个构造器仅有一个参数: name
System.out.println("小狗的名字是: “+name);
}
public static void main(String[ ] args){
// 下面的语句将创建一个Puppy对象
Puppy myPuppy = new Puppy("tommy");
}
}

访问实例变量和方法

 //通过已创建的对象来访问成员变量和成员方法:

 /*实例化对象*/
ObjectReference = new Constructor(); /*访问类中的变量*/
ObjectReference.variableName; /*访问类中的方法*/
ObjectReference.MethodName();

实例

 public class Puppy{
int puppyAge;
public Puppy(String name){
//这个构造器仅有一个参数: name
System.out.println("小狗的名字是 :”+name);
} public void setAge(int age){
puppyAge = age;
} public int getAge(){
System.out.println("小狗的年龄为 : "+puppyAge);
//为什么要return puppyAge? system.out.print句式中(...+puppyAge)不足以取出这个值吗?
return puppyAge;
} public static void main(String [ ] args){
/*创建对象*/
Puppy myPuppy = new Puppy("tommy");
/*通过方法来设定age*/
myPuppy.setAge(2);
/*调用另一个方法获取age*/ //为什么要用另一个方法获取?不能直接取puppyAge的值?
myPuppy.getAge();
System.out.println("变量值 : "+myPuppy.puppyAge);
}
}

源文件声明规则

当一个源文件中定义 多个类,并且还有import语句和package语句时,要特别注意:

  • 一个源文件中只能有一个public类
  • 一个源文件可以有多个非public类
  • 源文件的名称应该和public类的类名保持一致。
  • 如果一个类定义在某个包中,那么package语句应该在源文件的首行。
  • 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么Import语句应该在源文件最前面。
  • import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

例子

 1 public class Employee{
2 String name;
3 int age;
4 String designation;
5 double salary; //为什么是double? 不用int? 是为了更精确?但是double也不能表示精确的值货币啊?
6 //Employee 类的构造器
7 public Employee(String name){
8 this.name=name; //这里为什么要用this.name?this 指代什么,为什么其它变量不用this..?
9 }
10 //设置age的值
11 public void empAge(int empAge){
12 age=empAge;
13 }
14 /*设置salary的值*/
15 public void empSalary(double empSalary){
16 salary=empSalary;
17 }
18 /*打印信息*/
19 public void printEmployee(){
20 System.out.println("名字:"+name);
21 System.out.println("年龄:"+age);
22 System.out.println("职位:"+designation);
23 System.out.println("薪水:“+salary);
24 }
25 }

Java 读书笔记 (二) 对象和类的更多相关文章

  1. java读书笔记二

    这是我的一些读书笔记: 我研究了一下面向对象: 面向对象符合人类看待事物的一般规律,对象的方法的实现细节是包装的,只有对象方法的实现者了解细节 我觉得面向过程是由过程.步骤.函数组成,过程是核心,面向 ...

  2. Java初学者笔记二:关于类的常见知识点汇总

    一.Java的类: Java的类是Java的基本概念了,基本的定义语法我就不提了,自己也不会忘了的,下面分成几个模块介绍: 1.Java的类定义时候的修饰符 2.Java的类的继承与派生 二.Java ...

  3. 《C++ Primer Plus》读书笔记之八—对象和类

    第十章 对象和类   1.面向对象编程(OOP)的特性:抽象.封装和数据隐藏.多态.继承.代码的重用性. 2.指定基本类型完成了3项工作:①决定数据对象需要的内存数量.②决定如何解释内存中的位(lon ...

  4. [Effective Java 读书笔记] 第三章类和接口 第二十-二十一条

    第二十条 用函数对象表示策略 函数指针(JAVA的函数指针,是指使用对象的引用来作为参数,传递给另一个对象的方法)主要用来实现策略模式,为了在JAVA中实现这种模式,要申明一个接口来表示该策略,并为每 ...

  5. Java读书笔记二(封装类)

    1.介绍 都知道java中基本数据类型有非常多,比方string,int--,可是基本数据类型与对象之间是不同的.但非常多情况下,我们希望将基本数据类型当作对象使用,这时候就须要用到封装类. 2.封装 ...

  6. Java 读书笔记 (十一) Number & Math 类

    所有的包装类(Integer.Long.Byte.Double.Float.Short)都是抽象类Number的子类. 这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译 ...

  7. [Effective Java 读书笔记] 第三章类和接口 第十三 -- 十四条

    第十三条 使类和成员的可访问性最小化 总得来说,我们应该尽量将成员的访问范围限制到最小!有利于解耦,开发.测试和优化都能够更加独立. 对于成员(域,方法,嵌套类和嵌套接口),有四种可能的访问级别,访问 ...

  8. [Effective Java 读书笔记] 第三章类和接口 第二十三-- ??条

    第二十三条 请不要再新代码中使用原生态类型 1 使用原生态类型,就失去了泛型在安全性和表述性方面的所有优势,所以新代码中不要使用原生态类型 2 List<String>可以传递给List作 ...

  9. [Effective Java 读书笔记] 第三章类和接口 第十八--十九条

    十八条 接口优于抽象类 接口的特点: 1.一个类可以实现多个接口,不能继承多个类(抽象类) 2.接口不能有具体的方法实现,只定义标准类型 骨架类: 即实现一个abstract类来实现接口,提供给其他类 ...

随机推荐

  1. ubuntu下如何安装codeblocks集成开发环境

    codeblocks是一个十分优秀的C/C++开发IDE,虽然后起之秀codelite目前来看大有超越之势哦. 不过在ubuntu下安装codeblocks却比较麻烦,不像其他linux发行版,比如s ...

  2. DB查询分析器访问EXCEL时,要在表名前后加上中括弧或双引号

    1     引言    中国本土程序员马根峰推出的个人作品----万能数据库查询分析器,中文版本<DB 查询分析器>.英文版本<DB Query Analyzer>. 万能数据 ...

  3. Loader转换器

    一.简介 webpack本身只能处理js模块,Loader可以理解为模块和资源的转换器,它本身是一个函数,接受文件作为参数,返回转换的结果.因此,我们就能通过require来加载任何类型的模块和文件. ...

  4. 我对AOP的理解

    1.问题 问题:想要添加日志记录.性能监控.安全监测 2.最初解决方案 2.1.最初解决方案 缺点:太多重复代码,且紧耦合 2.2.抽象类进行共性设计,子类进行个性设计,此处不讲解,缺点一荣俱荣,一损 ...

  5. tomcat 工作原理

    Tomcat原理 分类: TOMCAT2009-05-17 22:25 4366人阅读 评论(3) 收藏 举报 tomcatexceptionsocketstringservernull Tomcat ...

  6. 下载网易云VIP音乐

    有偿帮助.联系方式在个人信息里.

  7. [INet] WebSocket 协议中的数据收发过程

    WebSocket 和 HTTP 相似,只是一个应用层协议,对下层透明,所以不涉及 TCP/IP. 由于浏览器支持了 WebSocket,所以在用 JS 写客户端的时候,是无需考虑数据的编码解码的. ...

  8. javascript封装的参数合并

    o=$.extend(initializationInterface.defaultValue,o); o= $.extend({}, initializationInterface.prototyp ...

  9. Java开源生鲜电商平台-支付模块的设计与架构(源码可下载)

    Java开源生鲜电商平台-支付模块的设计与架构(源码可下载) 开源生鲜电商平台支付目前支持支付宝与微信.针对的是APP端(android or IOS)   1. 数据库表设计. 说明:无论是支付宝还 ...

  10. linux进程、线程与cpu的亲和性(affinity)

    参考:http://www.cnblogs.com/wenqiang/p/6049978.html 最近的工作中对性能的要求比较高,下面简单做一下总结: 一.什么是cpu亲和性(affinity) C ...