1.1 类和对象

  • 类和对象是面向对象编程最重要、最核心的两个基本概念
  • 类是对一类事物描述,是抽象的、概念上的定义
  • 对象是实际存在的该类事物的每个个体,因而也称实例(instance)

1.1.1 类和对象的概念

  • 对象表示现实世界中某个具体的事物
  • 抽象是从特定的实例中抽取共同的性质以形成一般化概念的过程
  • 是具有共同属性和行为的对象的抽象
  • 类也称为模板,因为它们提供了对象的基本框架
  • 类可以定义为数据和方法的集合

  • 类以共同特性和操作定义实体
  • 类是用于组合各个对象所共有操作和属性的一种机制

属性

  • 事物的特性在类中表示为变量
  • 每个对象的每个属性都拥有其特有的值
  • 属性名称由类的所有实例共享

方法

  • 对象执行的操作称为方法
  • 操作的具体实现
  • 方法指定操作对象数据的方式
  • 在得到操作请求时指定如何做的算法

1.1.2 类的语法结构

语法:

[修饰符]class类名
{定义构造方法;定义属性;定义方法;
}
 - 修饰符可以是public、final、abstract或完全省略这三个修饰符- 类名必须是一个合法的标识符- 类中各成员之间的定义顺序对类的定义没有任何影响

1.1.3 对象的创建与使用

声明对象

格式:类名  对象名, 例如:Hero hero;

实例化对象

格式:对象名 = new 构造方法(),例如:hero = new 构造方法();

属性的调用

格式:对象名.属性,例如:hero.name=“zhang san”;

方法的调用

格式:对象名.方法名([参数列表]),例如:hero.run(30)”;

示例:创建一个英雄对象并测试该对象属性的赋值和方法调用

public class Hero {String name; //名字//奔跑方法public  void  run(int speed){System.out.println(speed+"m/s的速度飞速狂奔");}public static void main(String[] args) {//创建英雄对象Hero hero = new Hero();//通过对象实例调用name属性并为该属性赋值hero.name="黑暗游侠";System.out.println("英雄的名字:"+hero.name);hero1.run(60);//调用hero对象run(speed)方法}
}

1.1.4 对象和引用

  • 类是一种引用数据类型
  • 对象名是一个引用名
  • 对象名存放着栈内存I栈内存
  • 想比堆内存空间小但读取速度快

示例:创建Dota游戏中的防御塔类,通过两个坐属性显示防御塔所在的位置

代码如下:

public class TowerDefense {int x; int y;public void showMessage() {System.out.println("防御塔的坐标位置:" + x + "," + y);}public static void main(String[] args) {TowerDefense td = new TowerDefense();td.x=2;td.y=3;td.showMessage();}
}

1.2 方法的详解

  • 方法是类或对象的行为特征的抽象
  • 通过方法可以实现对类的属性的操作
    功能封装
  • 实现代码模块化重用

1.2.1 方法的声明

语法

[<修饰符>]  返回类型 方法名([参数列表])
{方法体
}
  • 修饰符表示方法的访问权限。修饰符有private、缺省访问修饰符、protected和public
  • 返回类型为方法返回值的类型(方法没有返回值,则方法的返回类型为void)
  • 定义时为形参,它没有分配内存,运行时才分配内存
  • 如果有多个参数,相邻的参数之间用逗号隔开
  • 对于有返回值的方法,方法体中至少有一条return语句
  • 方法不能嵌套定义

示例:在英雄类中设计一个战斗方法

class Hero {// 定义战斗方法void battle(){  /*实现具体的英雄战斗的业务逻辑*/}}

1.2.2 方法调用

在main方法中调用对象的实例方法步骤

  • 在类的main0方法中创建可以调用方法的实例
  • 将实例赋值给指定的引用变量,通过引用“变量.方法名”的形式调用方法
说明:如果方法的返回类型为void,说明方法没有返回值,所以在main0方法中调用
时,可以将此方法作为一条语句直接在程序中使用

示例:在英雄类中定义战斗方法并测试该方法的调用

 public class Hero{ String name;int age;public  void  battle(){System.out.println(name+"在肆无忌惮的战斗他的年龄才只有"+age+" 可他的血量只有1%了...");}public static void main(String[] args) {Hero hero = new Hero();//创建英雄对象hero.name="暗夜魔王";//为name属性赋值hero.age = 15;//为age属性赋值hero.battle();//使用该对象的battle()方法 }
}

1.2.3 方法参数传递

参数的传递是指实际参数向形参值的传递的过程。

Java中方法参数的传递方式为值传递

将实参的副本(复制品)传入给形参实参本身不会受到任何影响

解释:
Java中的参教传递类似于Dota游戏中英雄使用的幻象,当英雄使用幻象时就会产生一个与该英雄相同的复制品,幻象与英雄本身有相同的能力,但无论该幻象受到任何攻击和伤害都不会影响英雄本身传入方法的是实参值的复制品,无论方法中对该复制品进行何种操作,实际参数值均不会受到任何影响

Java面向对象笔记:【第一章 面向对象】相关推荐

  1. Java面向对象编程 第一章 面向对象开发方法概述

    一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...

  2. Java初级笔记-第一章

    第一章 Java概览 1.1 基本简介 Java是一种理想的面向对象的网络编程语言. 1991年,出现了Oak语言,旨在解决编程语言的选择和跨平台的问题. 1994年,随着Internet的迅猛发展, ...

  3. 皇甫懒懒 Java 学习笔记 第一章

    1. Java 程序的两种结构 : java 应用程序,java小应用程序 区别 : 程序目的不同  程序结构不同  执行方式不同 java 应用程序 : java 程序至少含有一个类,类名以大写字母 ...

  4. 使用java实现面向对象编程第十章嗖嗖移动业务大厅项目_ACCP6.0使用Java实现面向对象编程-第一章.ppt...

    ACCP6.0使用Java实现面向对象编程-第一章 练习--用类图设计Dog和Penguin类 需求说明: 运用面向对象思想抽象出Dog类和Penguin类,画出对应类图 根据类图编写Dog类和Pen ...

  5. Java学习笔记 六、面向对象编程中级部分

    Java学习笔记 六.面向对象编程中级部分 包 包的注意事项和使用细节 访问修饰符 访问修饰符的注意事项和使用细节 面向对象编程三大特征 封装 封装的实现步骤(三步) 继承 继承的细节问题 继承的本质 ...

  6. 【设计模式】第一章 面向对象六大原则

    第一章 面向对象六大原则 文章目录 第一章 面向对象六大原则 一.指导思想 二.面向对象六大原则 1.单一职责原则 2.开闭原则 3.里氏替换原则 4.依赖倒置原则 5.接口隔离原则 6.迪米特法则 ...

  7. Java核心技术·卷二·第一章笔记

    Java核心技术·卷二·笔记 第一章:Java8的流库 Java8引入的用来以"做什么而非怎么做"的方式的处理集合 1.1 从迭代到流的操作 package com.package ...

  8. 《MAC OS X 技术内幕》读书笔记第一章:MAC OS X的起源

    <MAC OS X 技术内幕>读书笔记第一章:MAC OS X的起源 前言 1 System x.x系列 1.1System 1.0(1984年1月24日) 1.2System 2.x(1 ...

  9. 【王道考研】操作系统 笔记 第一章

    特此鸣谢王道考研 本文参考王道考研的相关课程 若有侵权请联系,立删 其余笔记链接: [王道考研]操作系统笔记 第一章_才疏学浅743的博客-CSDN博客 [王道考研]操作系统 笔记 第二章上 进程调度 ...

  10. 【连载】大学物理笔记——第一章末+第二章质点动力学

    我是灼灼,一只初学Java的大一金渐层. 向往余秀华和狄兰·托马斯的疯狂,时常沉溺于将情感以诗相寄:追逐过王尔德.王小波的文字,后陷于毛姆和斯蒂芬·金不可自拔:热爱文学的浪潮,白日梦到底却总在现实里清 ...

最新文章

  1. modalDialog注意点
  2. 基于嵌入式linux 的车载定位系统设计,基于嵌入式Linux的GPS车载定位导航系统设计...
  3. 正则表达式grep, egrep, fgrep
  4. Javascript 学习笔记 2: 标识语句
  5. JAVA的思维逻辑_[Java教程]计算机程序的思维逻辑
  6. Spring Boot文件上传
  7. 为什么 IEnumerable 没有提供 ForEach ?
  8. cocos2dx游戏开发——微信打飞机学习笔记(五)——BackgroundLayer的搭建
  9. 暴力枚举——回文质数(洛谷 P1217)
  10. 团队文化之舒适区和挑战区
  11. python中字典的用法_Python中字典的详细用法
  12. 怎么关闭eureka的服务_SpringCloud之Eureka
  13. java 多路归并_归并排序(Java)
  14. Learning Moodle 3.5 学习Moodle 3.5 Lynda课程中文字幕
  15. java毕业生简历_一个18年毕业生的Java简历
  16. 单片机原理与接口技术期末总复习
  17. Java实现 LeetCode 313 超级丑数
  18. 摸鱼刷题||听说打工和摸鱼更配
  19. html上下箭头动态效果,使用CSS和Bootstrap图标制作上下跳动的指示箭头动画效果...
  20. 航测新旗舰|大疆M300+赛尔102S

热门文章

  1. 每个程序员都该知道的10大编程格言
  2. ps照片处理下雪效果
  3. 申宝证券-A股三大指数单边下跌
  4. dp主机_十代酷睿迷你主机推荐,体积不到 1L 的选择,A4 机箱也没法比
  5. Redis ZSet数据结构实现排行榜功能
  6. Flume虞兮叹一(为什么要把kafka和flume集成)
  7. Python基础之类和对象
  8. oracle安装盘符文件,oracle安装与卸载修改盘符是什么?
  9. 云尚,大健康时代的共享经济实践
  10. 注册制可能对我们带来的影响-读《三十年股票投资心得》