华杉研发九学习日记8----javase 面向对象2

华杉研发九学习日记8

Java面向对象

一,方法的重载

方法的重载(overLoad) :
在同一个类中,方法名相同,参数列表不同【参数的个数不同,参数的数据类型不同,参数的顺序不同】,与返回值无关。

优势:
1.见名知意
2.为后期的常用类库做准备
3.简化了开发,简化了类库的学习的复杂度

/*
定义一个Hath类,在该类中定义多个方法,用来求其最大值
1.传入两个整数。至回最大值
2.传入三个整数。驱回最大简
3.传入两个小数。返回最大值
4.传入三个小数,返回最大阎

 */

//  方法重载的概念
//  可以实现在同一个类中定义多个具有相同的方法名的方法
//  同一个类中,方法名相同,参数列表不同][多数的个数不同]即可
public class Math {
    public int getMax(int a, int b, int c){
        return a>b?a>c?a:c:b>c?b:c;
    }
    public int getMax(int a, int b) {
        return a > b ? a : b;
    }
    public double getMax(double a, double b){
        return a > b ? a : b;
    }
    public double getMax(double a, double b, double c){
        return a>b?a>c?a:c:b>c?b:c;
    }

二,类中的数组

类中的属性和方法都是可以放置数组的。

比如属性的数据类型可以是所有的数据类型,包含数组

比如方法中也是可以对数组进行传入和返回的。

案例:

定义一个学生类(Student),包含属性(id name age sex hobby[])
还有方法:
say() 自我简介描述
sum() 传入本次考试的多门课程成绩,返回其总成绩。
sort() 传入次考试的多门课程成绩,返回降序后的成绩数组。

测试中创建多个对象,把对象放入到数组中,遍历数组打印年龄大于/小于20的所有的学生的相关信息。

Student类:

public class Student {
    public int id;
    public String name;
    public int age;
    public String sex;
    public String hobby[];

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                ", hobby=" + Arrays.toString(hobby) +
                '}';
    }
    public void say() {
        System.out.println(id+" "+name+" "+age+" "+sex+" ");
        for (int i = 0; i < hobby.length; i++) {
            System.out.println(hobby[i]);
        }
    }

    public int sum(int sc[]){
        int sum = 0;
        for (int i = 0; i < sc.length; i++) {
            sum += sc[i];
        }
        return sum;
    }

    public int[] sort(int sc[]){
        for (int i = 0; i < sc.length-1; i++) {
            for (int j = 0; j < sc.length - i - 1; j++) {
                if (sc[j] < sc[j + 1]) {
                    int temp = sc[j];
                    sc[j] = sc[j + 1];
                    sc[j + 1] = temp;
                }
            }
        }
        return sc;
    }
}

测试类:

public class Test1 {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.id=111;
        s1.name="蜘蛛侠";
        s1.sex="男";
        s1.age=18;
        String hb[]={"唱","跳","Rap","篮球"};
        s1.hobby=hb;
        s1.say();
        //  定义数组,来保存各门功课的成绩
        int sc[]={90,100,100,20,59};
        int sum=s1.sum(sc);
        System.out.println("总成绩:"+sum);

        int psc[]=s1.sort(sc);
        for(int hh:psc){
            System.out.println(hh);
        }
        System.out.println("============================");
        Student stu1 = new Student();
        stu1.id=100;
        stu1.name="张无忌";
        stu1.sex="男";
        stu1.age=22;
        Student stu2 = new Student();
        stu2.id=101;
        stu2.name="赵明";
        stu2.sex="女";
        stu2.age=18;
        Student stu3 = new Student();
        stu3.id=102;
        stu3.name="周芷若";
        stu3.sex="女";
        stu3.age=19;

        //  数组
        //  Student stus[] = {stu1,stu2,stu3};
        Student stus[] = new Student[3];
        stus[0]=stu1;
        stus[1]=stu2;
        stus[2]=stu3;
        for(int i=0;i<stus.length;i++){
            if(stus[i].age<20){
                System.out.println(stus[i].name);
            }
        }
    }
}

三,构造器

构造器又称为构造方法,构造函数,构造器,主要作用就是用来创建对象的。

构造器是特殊的方法,是没有返回值,也没有void的。

无参的构造器格式:

public  构造器名(){
    构造体;
}

有参的构造器格式:

public 构造器名(数据类型 变量名,数据类型 变量名){
    this,属性名=变量名;
    ......
}

注意:

  • 构造器的作用就是用来创建当前类的对象

  • 构造器名必须和类名保持一致

  • 如果一个类,没有提供构造器,则系统会帮我们提供一个无参的构造器用来创建对象

  • 如果我们自己提供了构造器,系统就不会再提供无参的构造器了

  • 构造器也支持方法的重载

  • 有参的构造器主要用于在创建对象的同时为其属性赋值,简化属性赋值的过程

四,this关键字

this代表的就是当前对象的意思。

用法:

  • 1.当全局变量和局部变量同名时,使用this调用全局变量
  • 2.在同一个类的构造器中,使用this来调用当前类的另一个构造器,只执行其方法体而不在创建对象注意: this调用时必须是构造体中的第一行代码
public class A {
    int age;
    String name;

    public A(){
        this(23);     //  调用另一个带有age的构造器的方法体
        //     this  必须在第一行
        System.out.println("我是无参的构造器");
    }
    
    public A(int age) {
        System.out.println("我是带有age的构造器");
        this.age = age;
    }
    
    public static void main(String[] args) {
        A a = new A();
    }
}
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小孤鸡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值