Java面向对象(1)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


概念

类和对象是面对对象方法的概念核心。
类是对一类事物进行描述,是抽象的。
定义:对象是实际存在的该事物的每个个体,也称实例
对象是事物存在的实体
方法是类或对象的行为特征的抽象,是类或对象最重要的组成部分,通过方法可以实现对类的属性的操作
构造方法:在类定义中有一类特殊的方法,此类方法的名称与类名完全一致,在创建对象时用于对成员变量进行初始化


一、类的语法结构

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();
   }
}

在这里插入图片描述

总结

在这章我们学会了类和对象的定义,方法声明,可变形参,构造方法等我对这章感觉良好有一部分还是不清楚希望写完后能明白多一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月佳韵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值