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. leetcode之旅(7)-Move Zeroes

    Move Zeroes 题目描述: Given an array nums, write a function to move all 0's to the end of it while maint ...

  2. jQuery学习小结

    1.jQuery hide() 和 show() 通过 jQuery,您可以使用 hide() 和 show() 方法来隐藏和显示 HTML 元素: $("#hide").clic ...

  3. 编程题:利用for循环打印 9*9 表?

    利用for循环打印 9*9  表? 1*1=1 1*2=2  2*2=4 1*3=3  2*3=6  3*3=9 1*4=4  2*4=8  3*4=12  4*4=16 1*5=5  2*5=10  ...

  4. JMS详细的工作原理

    如果手机只能进行实时通话,没有留言和短信功能会怎么样?一个电话打过来,正好没有来得及接上,那么这个电话要传递的信息肯定就收不到了.为什么不能先将信息存下来,当用户需要查看信息的时候再去获得信息呢?伴随 ...

  5. Day7 子类调用父类的方法supper 绑定方法与非绑定方法

    supper:可以利用supper来重用父类的方法,可以不用指名道姓的调用了. class OldboyPeople: school = 'oldboy' def __init__(self,name ...

  6. web3.js

      安装 别按照官网上面 npm install web3 下载,我已经吃过一次亏了 npm initnpm install ethereum/web3.js --save   web3.isConn ...

  7. 【转】H.264中的NAL技术

    NAL技术 1.NAL概述 NAL全称Network Abstract Layer,即网络抽象层.在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面 ...

  8. mac port 清理

    http://popozhu.github.io/2014/10/27/mac-port-%E6%B8%85%E7%90%86/ 使用 mac port 来安装一些软件,时间久了后(也有两年多),更新 ...

  9. IT桔子沙龙之本地生活服务O2O探路者笔记整理

    这个沙龙活动侧重于创业融资与投资角度 主持人:真格基金投资分析师顾女士;E-mail:grace@zhenfund.com;新浪微博:@顾三小姐 赞助商七牛云的服务宣传:静态资源托管:上传下载全网加速 ...

  10. 《Linux下FTP服务器搭建及FTP使用》

    .LOGAndy:mxtd114 <Linux下FTP服务器搭建> 0.root登录 1.安装ftp # yum -y install ftp 2.安装vsftpd # yum -y in ...