JavaSE-07 类
习要点
- 面向过程
- 面向对象
- 抽象
- 类
- 类的构造方法
- 类中常见的关键字
- 类的成员方法
- 类的成员变量
面向过程
程序
程序的概念
程序一词来自生活,通常指完成某些事情的一种既定方式和过程。
可以将程序看成对一系列动作的执行过程的描述。
计算机程序
为了执行某些操作或解决某个问题而编写的一系列有序指令的集合。
面向过程程序的定义
程序=数据+算法+文档;
程序的组织单位为函数,通过函数间的调用实现软件功能。
变量
- 指向一个对象或包含一个值的标识符,都可以称为变量。
- 当变量的类型为基本型别(short, byte, int, long, float, double, boolean, char)时,变量的内容是一个值;当变量的类型为 Object 及其子类时,变量的内容是指向一个对象的引用。
流程控制
常见流程控制:顺序、分支选择、循环。
面向对象
什么是对象?
- 万物皆对象!对象具有属性(静态特性)和行为(动态特性)。
- 对象object也被称为实例——instance。
什么是面向对象?
程序的世界是虚拟的,面向对象技术利用“面向对象思想”去描述“面向对象的世界”,实现了虚拟世界和现实世界的一致性。更加符合人的思维习惯。
面向对象设计(OOD)和开发程序(OOP)的好处
- 用户、软件设计人员、软件开发人员之间的交流更加容易和顺畅
- 提高设计和开发效率
抽象
在软件设计阶段,如何使用面向对象进行程序的设计?
问题:如何在计算机世界描述他们?
- Java语言是面向对象的语言,在描述以上对象的时候是否要一只只小动物进行描述?虚拟世界和现实世界一对一映射,太繁琐,并不高明。所以面向对象的编程语言使用了class模板,即程序员在写代码的时候使用class去描述他们:对这些动物分类,找出共性,做出模板,当计算机虚拟世界需要具体对象的时候,使用模板生成一个具体对象即可。
- 把对象抽象出类,就是面向对象的程序设计。
从现实世界抽象出类三步骤
- 第一步:发现类
- 第二步:发现类的属性
- 第三步:发现类的方法
- 第四步:使用类图描述类
上机练习:使用代码开发电子宠物系统
- 系统中有狗狗和企鹅
- 系统提供宠物选择 //待完成
- 狗狗有品种选择、企鹅性别可选 //待完成
类
java类模板
[修饰符] class 类名 {
零到多个构造方法(也称为构造函数、构造器)
零到多个成员变量(也称为属性、字段、域。属性专指带有getter和setter访问器)
零到多个成员方法
}
类的访问修饰符:无、public、final、abstract
注意:没有修饰符的类只在本包中可见。
类的使用
//实例化类 Dog dog; dog = new Dog(); //访问类中的成员 dog.nickname=”旺旺”;//为成员变量赋值 dog.print();//调用类中的成员方法
类的构造方法
构造方法语法分析
[修饰符] 构造方法名(形参列表){
可执行语句;
}
修饰符:public、protected、private
方法名:同类名
private常用于设计单例模式,例如:
public class Dog { private static Dog currentDog = new Dog(); public static Dog getDog() { return currentDog; } // Don't let anyone else instantiate this class private Dog() { } }
构造方法用来构造该类的实例。Java通过new关键字来调用构造方法,从而返回该类的实例。
例如:Dog dog = new Dog();
一个类创建对象的根本途径是通过构造方法构造实例。
如果没有自定义构造方法,系统默认提供一个无参构造方法。如果自定义了构造方法,则系统不再提供无参构造方法。
带参数的构造方法
如果希望在构造一个类的实例的同时完成实例的初始化工作,则可以定义带参数的构造方法。
构造方法的形参名如果和成员变量的名称重复,按照java的规则:局部变量名和成员变量名重复,则局部变量覆盖成员变量。如果需要访问成员变量,则需要在成员变量名之前添加this关键字。
构造方法重载
- 重载的概念:方法名相同,参数项不同。与方法的返回值,修饰符无关。
- 构造方法可以重载,普通方法也可以重载。
- 重载构造方法的调用,形参和实参要一一对应。
构造方法的互相调用
类中常见关键字
this关键字用法
- this关键字表示当前对象的引用;用以区分同名成员变量。
- 在构造方法中引用该构造器正在初始化的对象。
- 在普通方法中引用调用该方法的对象。
static修饰的成员变量和成员方法
- static修饰的成员变量和成员方法可以通过类名.成员访问。
- static可以用来修饰代码块。
- static修饰的成员变量、成员方法、代码块,相应数据和代码保存在内存的静态数据区。
- static修饰的成员变量、方法、内部类、初始化代码块都是属于类,没有static修饰的都属于实例。
示例代码:
class Web { public final static String logo="新浪网";// 类变量 public static int count = 0;// 类变量 public String ip = null;// 实例变量 public Web(String ip) { count++; // this.count++;//提示通过static方式访问 this.ip = ip; } /** 类方法:统计网站访问人数 */ public static void printCount() { System.out.println("欢迎访问"+logo); System.out.println("当前访问人数:" + count); } /** 实例方法:输出当前远程用户ip地址 */ public void printIp() { System.out.println("当前登录ip为:" + ip); System.out.println("-------------------------\n"); } } /** 测试类 */ public class StaticDemo { public static void main(String[] args) { Web local1 = new Web("10.12.1.3"); Web.printCount(); local1.printIp(); Web local2 = new Web("192.168.1.2"); Web.printCount(); local2.printIp(); Web local3 = new Web("20.38.4.5"); Web.printCount(); local3.printIp(); Web local4 = new Web("121.124.13.32"); Web.printCount(); local4.printIp(); Web local5 = new Web("168.77.88.44"); Web.printCount(); local5.printIp(); } }
final修饰的成员变量
- 用final修饰的成员变量称为常量。
- static final 变量类型 变量名 : 静态常量。
类的成员方法
语法格式
[修饰符] 方法返回值类型 方法名( 形参列表 ) {
方法执行语句;
}
修饰符
public、protected、private、static、final、abstract。
其中public、protected、private只能选择其一,abstract与final只能出现其一;他们都可以和static组合起来修饰方法。
返回值
返回值需要使用return语句返回结果,结果的类型必须和返回值类型相匹配。如果没有返回值,则方法的返回值类型必须为void。
public class Test { public int age; public Test grow(){ age++; return this;//返回当前对象 } public static void main(String[] args) { Test t=new Test(); t.grow().grow().grow().grow(); System.out.println("age="+t.age); } }
类中方法的调用
- 类方法只能调用另外的类方法,语法格式:类名.方法名。类名可省略。
- 实例方法间的调用,语法格式:对象名.方法名。实际写成this.方法名。this可省略。
- 实例方法可以调用类方法(static修饰的方法)。
- 方法传递参数的机制(实参是如何传递参数给形参的?)。
- java类中的方法都是按值方式传递参数的,即传递实参的副本给形参。
- 基本类型传递值,引用类型传递对象的地址(不是对象的副本)。
- String类型数据,如果是定义为双引号类型的数据,则按照传值方式传递数据,如果采用构造方式构建的字符串,则传递字符串对象的引用。
形参个数可变的方法
在定义方法时,如果在最后一个形参的类型后增加三个点(…),则表明该形参可以接受多个参数值,多个参数值被当成数组传入。
public static void targs(int a , String … names){ for(String item : names){ System.out.println(item); } }
注意:可变个数形参一个方法中只能有一个,并且要放在方法参数列表最后。
类的成员变量
语法格式
[修饰符] 类型 成员变量名 [=默认值];
修饰符
public、protected、private、static、final
其中public、protected、private只能选择其一,可以与static、final组合起来修饰成员变量。
成员变量和局部变量
成员变量:实例变量(不以static修饰的变量)、类变量(static修饰)
局部变量:形参、方法局部变量、代码块内局部变量
实际开发中尽量避免通过实例访问类变量。
上机练习:使用代码开发电子宠物系统
- 系统中有狗狗和企鹅 //已完成
- 系统提供宠物选择
- 狗狗有品种选择、企鹅性别可选
JavaSE-07 类的更多相关文章
- Java虚拟机JVM学习07 类的卸载机制
Java虚拟机JVM学习07 类的卸载机制 类的生命周期 当Sample类被加载.连接和初始化后,它的生命周期就开始了. 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就 ...
- JavaSE常用类之File类
File类 只用于表示文件或目录的信息,不能对文件内容进行访问. java.io.File类∶代表文件和目录.在开发中,读取文件.生成文件.删除文件.修改文件的属性时经常会用到本类. File类不能访 ...
- JavaSE| 面向对象-类的五大成员
面向对象 面向对象只是其中一种编程思想,还有很多其他的编程思想:面向过程.面向切面.面向服务编程... 面向过程的思维方式:注重步骤.过程,面向过程强调的是功能行为: 面向对象的思维方式:关注的是“对 ...
- JavaSE 常用类与其方法
1.基本数据类型比较用:== 2.引用数据类型比较用:equals方法 如果引用数据类型使用==比较的话,比较的是地址值 toString类 对象调用toString()需要重写本方法: 在封装类中, ...
- JavaSE Collections类 , Iterator迭代器 , 增强for循环
Collections 它是集合的工具类,为集合体系扩展了一些其他的方法.类中都是静态的方法,可以使用类名直接调用. 可变参数 在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类 ...
- OC 07 类的扩展
1.NSDate的使用 NSDate是Cocoa中⽤于处理⽇期和时间的基础类,封装了某⼀给定的时刻(含日期,时间,时区) 注意NSLog(@“%@”,nowDate);⽆论你是哪个时区的时间,打印时总 ...
- Java知识系统回顾整理01基础07类和对象01引用
一.引用的定义 引用的概念,如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用. 二.引用和指向 new Hero(); 代表创建了一个Hero对象 但是也仅仅是创建了一个对象,没有办法 ...
- C++学习笔记:07 类的继承与派生
课程<C++语言程序设计进阶>清华大学 郑莉老师) 基本概念 继承与派生的区别: 继承:保持已有类的特性而构造新类的过程称为继承. 派生:在已有类的基础上新增自己的特性(函数方法.数据成员 ...
- 【JavaSE】类与类的关系--UML
类(对象/接口)之间的关系 -- UML类图展现 2019-07-14 14:37:19 by冲冲 在面向对象程序设计时,类与类之间的关系主要分为:继承,实现,依赖,关联,聚合,组合等6种关系. ...
- JavaSE常用类之Object类
1. hashCode方法 代码: package NeiBuLei; public class hashCode { public static void main(String[] args) { ...
随机推荐
- 如何编写linux下nand flash驱动-4
2. 软件方面 如果想要在Linux下编写Nand Flash驱动,那么就先要搞清楚Linux下,关于此部分的整个框架.弄明白,系统是如何管理你的nand flash的,以及,系统都帮你做 ...
- 《C-RNN-GAN: Continuous recurrent neural networks with adversarial training》论文笔记
出处:arXiv: Artificial Intelligence, 2016(一年了还没中吗?) Motivation 使用GAN+RNN来处理continuous sequential data, ...
- Git学习三
一.准备Github远程仓库 1.github官网注册账户 2.ubuntu端创建SSH Key $ssh-keygen -t rsa -C "youremail@example.com&q ...
- [App Store Connect帮助]八、维护您的 App(3)将 App 恢复至 App Store
如果您已将 App 从 App Store 中移除,之后创建了该 App 的一个新版本,那么即使新版本被“App 审核”批准,App 状态也仍会是“被开发者下架”.若要发布新版本,您必须首先将其恢复至 ...
- Eclipse 最新版2018-09安装Maven教程
其实在写这篇教程之前,花了不少时间来学习安装Maven.不是链接打不开,要么就是提供的方法不适合我这个版本,当然了,既然你能看到这篇教程说明我已经找到了正确方法. 打开Eclipse-Help-> ...
- .Net Core之Configuration
ASP.NET CORE 中自动集成了应用配置,支持从以下 源 处获取配置键值对 命令行 环境变量 内存 文件配置 其中文件配置是我们最常用的方式,默认文件是.json的json格式文件,摒弃了以往. ...
- 我的spring cloud项目历程(2018.3~2018.9)
前言 今天是9月17日,趁着山竹的临幸,得以在家里舒适的办公.项目从3月底开始,至今刚好半年.抽几十分钟,总结下半年的历程.对后面的项目,应该也有一点帮助吧. 学习前的七个问题 项目开始前,由于某些特 ...
- saltstack实战笔记
#运维管理工具 ansible #支持ssh,不需要客户端 saltstack #也是只是ssh,不需要客户端的 安装架构是,master /minion 安装salt的依赖模块 python zer ...
- [Usaco2008 Dec]Patting Heads 轻拍牛头
Description 今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏. 贝茜让N(1≤N≤100000)头奶牛坐成一个圈.除了1号与N号奶牛外,i号奶牛与i-l号和i+l号奶牛相邻.N号 ...
- [POI2001]Gra绿色游戏
Description 绿色游戏是一种两人游戏,双方分别称Ann和Billy.游戏的内容主要是轮流在棋盘上移动一颗棋子.棋盘上的点一部分是绿色的,其余是白色的:全部从1至a+b编号.编号1至a的点属于 ...