提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
面对对象
概念
类和对象是面对对象方法的概念核心。
类是对一类事物进行描述,是抽象的。
定义:对象是实际存在的该事物的每个个体,也称实例
对象是事物存在的实体
方法是类或对象的行为特征的抽象,是类或对象最重要的组成部分,通过方法可以实现对类的属性的操作
构造方法:在类定义中有一类特殊的方法,此类方法的名称与类名完全一致,在创建对象时用于对成员变量进行初始化
一、类的语法结构
1.语法
【修饰符】class 类名{
定义构造方法;
定义属性;
定义方法;
}
2实例
class Hero{
String name;//姓名
int age; //年龄
//定义方法
void run(){
/*具体业务操作*/
}
}
二.创建对象
1.语法
1)声明对象:类名 对象名;例子
Hero hero;
2)应用对象:对象名 = new 构造方法();
例子
hero = new Hero();
属性调用: 对象名.属性
方法调用: 对象名.方法名( 参数 )
2实例
创建两个具体英雄实例在控制台输出不同英雄对象的姓名,年龄和性别,调用各自英雄对象的run()方法
public class Hero {
String name;
int age;
String sex;
// 奔跑方法
public void run(int speed){
System.out.println(speed+"m/s的速度飞速狂奔");
}
public static void main(String[] args){
// 创建英雄对象
Hero hero1 =new Hero();
// 通过对象实例调用name属性并为该属性赋值
hero1.name="黑暗游侠";
hero1.age=20;
hero1.sex="女";
System.out.println("英雄的名字"+ hero1.name);
System.out.println("英雄的年龄"+hero1.age);
System.out.println("英雄的性别"+hero1.sex);
// 使用该对象用run()方法
hero1.run(30);
System.out.println("----------------------");
Hero hero2 = new Hero();
hero2.name="喊地神牛";
hero2.age=30;
hero2.sex="男";
System.out.println("英雄的名字"+ hero2.name);
System.out.println("英雄的年龄"+hero2.age);
System.out.println("英雄的性别"+hero2.sex);
hero2.run(60);
}
}
三.方法
1.语法(方法声明:方法头,方法体)
修饰符 返回值 方法名(参数例表){ 方法体 }
1.1实例
public class Hero{
//定义英雄战斗方法
public void battle(){
//实现具体的英雄战斗的业务逻辑
}
}
2.方法参数(实际参数向形参值的传递)
重构英雄类定义一个int类型的变量output,表示英雄的血量当battle()方法执行一次,output变量值减少10,在控制台随机输入一个小于100的整数,将该整数值赋于变量output,作为英雄的初始血量,在main方法中循环调用英雄的battle()方法。如果英雄的血量已经小于或者等于零,则停止循环,系统给出友好提示信息,英雄已经牺牲,否则最终输出英雄的血量
import java.util.Scanner;
public class Hroe {
// 血量
int output;
// 攻击次数
int count=1;
public void battle(){
// 方法每执行一次,英雄血量减少10
output = output - 10;
if(output<=0){
System.out.println("对不起你的英雄已经牺牲");
// 方法表示结束当前运行的程序
System.exit(0);
}
System.out.println("第"+count+++"次攻击,你的英雄当前的血量"+output);
}
public static void main(String[] args){
Hroe hroe= new Hroe();
// 创建对象
Scanner input = new Scanner(System.in);
System.out.println("请输入英雄血量");
//
hroe.output=input.nextInt();
for(int i =1;i<6;i++){
hroe.battle();
}
System.out.println("战斗结束后您的英雄的血量值"+ hroe.output);
}
}
四.可变形参方法
1.语法(方法声明:方法头,方法体)
修饰符 返回值 方法名(变量类型…变量名){方法体}
1.1实例
public class VarargsTest {
// 定义形参个数可变的方法
public static void testVarargs(int x,String...users){
for (String user:users){
System.out.println(user);
}
}
public static void main(String[] args){
// 采用可变个数形参的方法调用
testVarargs(3,"张小文","王艺儒","李晨生");
}
}
2. 可变参数和数组参数的区别
1)定义方法不一样
1.1)采用可变个数形参定义方法
public static void testVarargs(String...users);
1.2)采用可变个数形参定义方法
public static void testArray(String[] users);
2)调用方法不一样
1.1)采用可变个数形参定义方法
testVarargs("张小文","王艺儒","李晨生");
1.2)采用可变个数形参定义方法
testArray(new String[] {"张小文","王艺儒","李晨生"});
3)参数位置不同
3.实例
采用可变形参方法计算给定的多个整数之和对比分析可变形参与数组形参两种方式中有关参数定义和传参的区别
public class TestCal {
// 定义求和方法
public int sum(int... nums) {
int sum = 0;
for (int num : nums) {
sum += num;
}
return sum;
}
public static void main(String[] args){
TestCal cal = new TestCal();
int result = cal.sum(1,3);
System.out.println(result);
//调用求和方法
result= cal.sum(1,2,3,4);
System.out.println(result);
// 可以用数组形式调用
result= cal.sum(new int[]{3,4,5});
System.out.println(result);
}
}
五.构造方法
public class Hero {
String name;
int age;
String sex;
// 用户自定义的构造方法
public Hero(String xm,int nl){
System.out.println("---用户自定义构造方法执行了---");
name = xm;
age = nl;
}
public Hero(){
System.out.println("---缺省构造方法被执行了---");
}
public void showMessage(){
System.out.println("英雄名"+name+"\t"+"英雄年龄:"+age);
}
public static void main(String[] args){
Hero hero = new Hero();
Hero hero2 = new Hero("德鲁伊",45);
hero.showMessage();
hero2.showMessage();
}
}
总结
在这章我们学会了类和对象的定义,方法声明,可变形参,构造方法等我对这章感觉良好有一部分还是不清楚希望写完后能明白多一点。