Java面向对象

  1、定义类

  2、创建对象、调用方法

类和对象:

某一类对象的概念定义。

比如:人类 - 抽象出来的概念(不特指某个人)

对象 - 在类的概念下产生的一个实例,它就是一个对象了.

  java程序中,类是最小的程序单位 - 所有的java程序都必须从定义类开始

定义类的语法格式

[修饰符]  class  类名{

//0 ~ N 个 Field 定义

//0 ~ N 个 方法定义

//0 ~ N个 构造器定义

}

一个类中最多只能出现五种成分:Field、方法、构造器

一个类最常见的成分为:Field、方法和构造器

[修饰符] :可以省略,可以是public|final|abstract. 只有三个或省略

类名      :自定义填空,从语法角度讲只要是标识符就可以

规定约束:类名由一个或多个有意义的单词组合而成(每个单词首字母要大写),通过类名就能知道该类是做什么的

定义Field的语法格式

[修饰符]  类型  Field名 [ = 默认值];

[修饰符]      : 可以省略,还可以是public|protected|private,static,final .transient - 序列化用到

类型           : 不能省略,可以是基本类型、数组、任意类(JDK类、自定义类、接口、枚举)

Field名        :不能省略, 规定约束:类名由一个或多个有意义的单词组合而成(第一个单词首字母要小写,后面单词首字母大写)。

[ = 默认值]  : 可以省略,默认值必须与它声明的类型是一致的(java是强类型语言)

定义方法的语法格式:

[修饰符]  返回值类型  方法名([0~N个形参声明]){

//0 ~ N 可执行性语句

//如果方法签名中有返回值类型声明,该方法必须包含有效的return语句

}

[修饰符]    : 可以省略,可以是public|protected|private,static,final,abstract(抽象),abstract和final不能同时出现

返回值类型 : 不能省略,可以是基本类型、数组、void(声明该方法没有返回值)、任意类(JDK类、自定义类、接口、枚举)

方法名      : 不能省略, 规定约束:类名由一个或多个有意义的单词组合而成(第一个单词首字母要小写,后面单词首字母大写),通过方法名就能知道该方法是做什么的 - 应该是动词

形参声明   :每个形参声明都满足:"类型 变量"的格式,多个形参声明之间用","隔开

方法体      : 方法体中的代码必须是可执行性的代码,代码的执行是从上到下的

定义构造器的语法格式:

[修饰符]  构造器名(0 ~ N个形参声明) {

//0 ~ N 可执行性语句

}

[修饰符] : 可省略,可以是public|protected|private

构造器名 :不能省略,必须与类名相同

形参声明 : 每个形参声明都满足:"类型 变量"的格式,多个形参声明之间用","隔开

构造器执行体 : 执行体必须是可执行性的代码,代码的执行是从上到下的

构造器的作用:

构造器可以认为是一种特殊的方法,但构造器的作用是用来产生对象的。

通俗来将:但我们定义一个类之后,就需要通过构造器来获取当前类的实例。

注意点:如果程序没有为类提供任何构造器,系统会为类提供一个无参数的构造器

  局部变量:方法里的局部变量、形参、代码块的局部变量

局部变量前面只能有的修饰符:final

局部变量必须由程序员来赋初始值

实例:

public class Apple{

//Field定义:[修饰符] 类型 Field名 [ = 默认值];
private int age;
protected String name;
protected static String[] subs;
double weight = 23.3;
int grade;
//grade = 2;//类中只有五种成分,它不是Field、也不是方法、构造器,所以是错的

/*
  [修饰符] 返回值类型 方法名([多个形参声明]){
    0 ~ N 可执行性语句
    如果方法签名中有返回值类型声明,该方法必须包含有效的return语句
  }
*/

String sayHello(String name){

//赋值语句属于执行性语句,可放在方法里边

//返回值类型为String,所以必须包含有效的return语句

grade = 2;
return name + ",Hello";
/*

  编译时,if里的只是一个boolean型表达式
  系统认为if里的return语句有可能不被执行,因此该return不算有效
  除非再加上else return才能算有效,
  保证在编译阶段至少要有一条语句能真正的执行才算有效的return语句
  if(true){
    return name + ",Hello";
  }
*/

}

}

public class TestApple {
  public static void main(String[] args){
    //apple是定义在方法内的一个局部变量
    Apple apple;
    //使用局部变量前必须先赋初始值
    //System.out.println(apple);
    //new后面带的是一个构造器,创建一个TestApple对象
    //并让apple引用变量指向TestApple对象
    //TestApple对象存放在堆里的
    //apple是在main方法中定义的,所以apple引用变量是保存在main方法栈中
    apple = new Apple();
    //要调用方法就一定要满足对方的要求(形参)
    System.out.println(apple.sayHello("金山城"));
    //直接打印对象,输出的必然是"类名@hashcode值"
    System.out.println(apple);
  }
}

疯狂java学习笔记之面向对象(一) - 定义类、方法、构造器的更多相关文章

  1. 疯狂java学习笔记之面向对象(八) - static和final

    一.static: 1.static是一个标识符: - 有static修饰的成员表明该成员是属于类的; - 没有static修饰的成员表明该成员是属于实例/对象的. 2.static修饰的成员(Fie ...

  2. 疯狂java学习笔记之面向对象(九) - 抽象和接口

    一.抽象(abstract): 1.抽象类: 使用abstract修饰的类就是抽象类; 相比于普通类抽象类增加了支持抽象方法的功能,但也丢失了创建实例的功能(抽象类中不能创建实例),其他普通类有的抽象 ...

  3. 疯狂java学习笔记之面向对象(四) - this关键字

    Java中this关键字主要有以下两个方法: 1.this引用 - 可用于任何非static修饰的方法和构造器中,当this用于方法中时,它代表调用该方法的实例/对象;当this用于构造器中时,它代表 ...

  4. 疯狂java学习笔记之面向对象(六) - 构造器重载、方法重载和方法重写

    一.方法重载(Overload): Java允许同一个类中定义多个同名方法,只要形参不一样就可以,如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,则被成为方法重载(两同一异). 同 ...

  5. 疯狂java学习笔记之面向对象(五) - 封装、继承、多态

    一.封装: 封装的概念: - 合理的隐藏:隐藏不想被外界操作的Field.方法.构造器 - 合理的暴露:一般就是希望给别人调用的方法 e.g:显示器(按键暴露出来操作,但实际的东西/细节方法被隐藏起来 ...

  6. 疯狂java学习笔记之面向对象(三) - 方法所属性和值传递

    方法的所属性: 从语法的角度来看:方法必须定义在类中 方法要么属于类本身(static修饰),要么属于实例 -- 到底是属于类还是属于对象? 有无static修饰 调用方法时:必须有主调对象(主语,调 ...

  7. 疯狂java学习笔记之面向对象(二) - 成员变量与局部变量

    Java变量按其作用域可分为:成员变量和局部变量.注意:在Java中是没有全局变量这个概念的 一.成员变量: 成员变量是在类中定义的变量,具体可分为类变量与实例变量--有无static修饰 实例变量的 ...

  8. 疯狂java学习笔记之面向对象(七) - super关键字

    super有以下两大作用: 1.起限定作用:强制去访问父类的成员(Field.方法) 2.起调用作用:指定/显示调用父类的某个构造器 super调用规则: 1.子类构造器总会调用父类构造器一次,默认情 ...

  9. Java学习笔记之---面向对象

    Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...

随机推荐

  1. August 29th 2016 Week 36th Monday

    Every has the capital to dream. 每个人都有做梦的本钱. Your vision, our mission. That is an advertisment of UMo ...

  2. chrome进入控制台时自动进入断点模式的解决方法

    简单粗暴,不知道为什么,去掉那个√就好了

  3. linux下U盘文件只读的解决办法

    . 在终端运行如下命令 tail -f /var/log/syslog . 插入有只读文件系统故障的U盘 . 观察命令行输出 输出局部如下: Jul :: cslouis-pc kernel: [15 ...

  4. Linux解决关闭终端后终止服务问题

    可使用nohup. 具体使用方法,参见:http://zjking.blog.51cto.com/976858/1117828

  5. poj2912(种类并查集+枚举)

    题目:http://poj.org/problem?id=2912 题意:n个人进行m轮剪刀石头布游戏(0<n<=500,0<=m<=2000),接下来m行形如x, y, ch ...

  6. Xcodeproject详解

    前言 在 iOS 开发过程中,我们经常会在 Xcode 里面做一些配置,比如添加系统库.第三方库,修改证书配置文件,修改编译属性等等. 在这个过程里面,一般大家仅仅只是根据经验来配置这些,并没有比较清 ...

  7. Linux内核驱动之GPIO子系统(一)GPIO的使用

    转自:http://blog.csdn.net/mirkerson/article/details/8464290 一 概述 Linux内核中gpio是最简单,最常用的资源(和 interrupt , ...

  8. OpenCV-paper detection & perspective transformation 相关资料

    经过一段时间的搜索,决定把搜过的资料都汇集在此,以免重复劳动,几乎来自stackoverflow OpenCV C++/Obj-C: Detecting a sheet of paper / Squa ...

  9. [Outlook] Outlook2013能收但无法发送邮件-0x800CCC13, 0x800CCC0B, 0x8004210B

    [20140704更新],在公司收邮件的时候,问题再次出现,错误码:0x800ccc13,按照以下方法测试成功: 1. 按照以前办法,反复重启,失败 2. 按照以下参考连接A中的步骤 a. Click ...

  10. [JavaCore] 取得类的字节码、取得类的装载器

    三种方式取得类的字节码: 1. 类名.class BranchInfoService.class 2. 对象名.getClass() branchInfoService.getClass() 3. C ...