房上的猫:类和对象>万物皆对象
众所周知:java是一门面向对象的编程语言
本章将介绍基础的类和对象
一.对象 对象是用来描述客观事物的一个实体,由一组属性和方法构成 二.封装 封装就是把一个事物包装起来,并尽可能隐藏内部细节 三.类 类定义了对象将会拥有的特征(属性)和行为(方法) 类的属性: 对象拥有的静态特征在类中表示时称为类的属性 类的方法: 对象执行的操作称为类的方法 四.类和对象的关系
类和对象的关系是抽象和具体的关系 类是对象的类型,对象是类的实例 对象的属性和方法被共同封装在类中,相辅相成,不可分割 五.java的类模板 1.语法:
pubilc class <类名>{
//定义属性部分
属性1的类型 属性1;
属性2的类型 属性2;
......
属性n的类型 属性n;
//定义方法部分
方法1;
方法2;
......
方法n;
}
解析: 在java中创建一个类,需要使用一个class,一个类名和一对大括号 (1)class是创建类的关键字 (2)class前的public,表示公有的意思 (3)编写程序时,要注意编码规范,不要漏写public (4)在class关键字的后面要给定义的类命名,然后写上一对大括号,类的主体部分就写在{}中 2.类的命名规则: (1)不能使用java中的关键字 (2)不能包含任何嵌入的空格或点号".",以及除下划线"_",字符"$"外的特殊字符 (3)不能以数字开头 3.编写类的属性: 通过在类的主体中定义变量来描述所具有的静态特征(属性),这些变量称为类的成员变量 4.编写类的方法: 通过在类中定义方法来描述类所具有的行为,这些方法称为类的成员方法 六.创建和使用对象 类的作用就是创建对象,称为类的实例化过程 一个实例也就是一个对象,一个类可以生成多个对象 1.创建对象语法:
类名 对象名 = new 类名();
//在创建类的对象时,需要使用java的new关键字
2.引用对象语法:
对象名.属性 //引用对象的属性
对象名.方法名(); //引用对象的方法
//要引用对象的属性和方法,需要使用"."操作符。其中,对象名在原点的左边,属性或方法的名称在原点的右边
七.面向对象的优点 1.与人类的思维习惯一致 2.信息隐藏,提高了程序的可维护性和安全性 3.提高了程序的可重用性 八.使用类和对象的步骤 1.定义类:使用关键字class 2.创建类的对象:使用关键字new 3.使用类的属性和方法:使用"."操作符
九.Java数据类型的默认值
类型 |
默认值 |
---|---|
int |
0 |
double |
0.0 |
char |
'u0000' |
boolean |
false |
String |
null |
十.示例:
import java.util.Scanner;
public class Objects_010 {
//定共有的成员属性
String name;
int hp;
//英雄系统
public void yx() {
System.out.println("我是英雄,我的基本信息如下:");
System.out.println("姓名:" + name + "t生命值:" + hp);
}
//怪物系统(怪物类型设为独有的lx属性(有参方法))
public void gw(String lx){
System.out.println("我是怪物,我的基本信息如下:");
System.out.println("姓名:" + name + "t生命值:" + hp+"t类型:"+lx);
}
//武器系统(武器攻击力类型设为独有的gjl属性(有参方法))
public void wq(String gjl){
Scanner bdqn = new Scanner(System.in);
gjl =bdqn.next();
System.out.println("我是武器,我的基本信息如下:");
System.out.println("武器名:" + name + "t攻击力:"+gjl) ;
}
public static void main(String[] args) {
Objects_010 a = new Objects_010();
//使用new关键字创建类的对象
Scanner bdqn = new Scanner(System.in);
//创建扫描仪
System.out.println("请输入英雄的基本信息:");
System.out.println("姓名:");
a.name=bdqn.next(); //使用“.”操作符点出属性
System.out.println("生命值:");
a.hp=bdqn.nextInt(); //使用“.”操作符点出属性
a.yx(); //为英雄信息赋值并输出
System.out.println("n请输入怪物的基本信息:");
System.out.println("怪物名:");
a.name=bdqn.next(); //使用“.”操作符点出属性
System.out.println("生命值:");
a.hp=bdqn.nextInt(); //使用“.”操作符点出属性
String lx = bdqn.next();
//为怪物系统中有参方法中的局部参数提前定一个变量在引用方法时使用
System.out.println("类型:");
a.gw(lx);
//为怪物信息赋值并输出,括号内是引用的前面的变量值给怪物系统中的参数
System.out.println("n请输入武器的基本信息:");
System.out.println("武器名:");
a.name=bdqn.next(); //使用“.”操作符点出属性
System.out.println("攻击力:");
String gjl = bdqn.next();
//为武器系统中有参方法中的局部参数提前定一个变量在引用方法时使用
a.wq(gjl);
//为武器信息赋值并输出,括号内是引用的前面的变量值给武器系统中的参数
}
}
- WCF技术剖析之十:调用WCF服务的客户端应该如何进行异常处理
- [原创-总结]WCF技术剖析系列总结篇
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-WebApi与Unity注入
- 分布式高并发下mysql数据库读写分离
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(64)-补充WebApi与Unity注入-配置文件
- 身临其境的建筑体验:3D打印和人工智能相结合的“星形胶质细胞”
- C语言真的太强大了,C几乎无处不在!
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)
- 具有依赖关系的并行操作执行
- Silverlight初级教程-绘图布局
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(66)-MVC WebApi 用户验证 (2)
- 微信产品经理的妥协还是用户的需求?
- CSLA .NET 3.6支持Silverlight 2
- WCF技术剖析之二:再谈IIS与ASP.NET管道
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Vulnhub之DC-2过关记录
- 关于链表,你该了解这些!
- R语言可视化操作数据挖掘
- 因为一个函数strtok踩坑,我被老工程师无情嘲笑了(一)
- 【日志架构】ELK Stack + Kafka 端到端练习
- 极客算法训练笔记(三),链表详细图解,别再逃避了朋友
- 我就感觉到快 —— zsh 和 oh my zsh 冷启动速度优化
- equals和HashCode深入理解(转)
- LeetCode18|排序链表
- LeetCode17|删除链表的节点
- LeetCode16|两数相加
- 12-2 提示符添加颜色及光标移动
- Redux入门实战——todo-list2.0实现
- 29.Python的集合
- 性能分析(4)- iowait 使用率过高案例