美文网首页
【JAVA学习笔记】类和对象的入门

【JAVA学习笔记】类和对象的入门

作者: Geekero | 来源:发表于2021-04-04 07:11 被阅读0次

学习自华为开发者学院陈璇老师的JAVA系列课程

一、类的属性和方法

1.1 类图

1.2 定义


1.3 方法的调用

例子1

//游客类
public class Visitor {
    //属性
    String name;
    int age;

    //方法
    public void showPrice(){
        if(age>0 && age<=10){
            System.out.println(name+"的年龄为: "+age+"岁; 门票免费!\n");
        }else if(age<18){
            System.out.println(name+"的年龄为: "+age+"岁; 门票10元!\n");
        }else if(age<60){
            System.out.println(name+"的年龄为: "+age+"岁; 门票20元!\n");
        }else{
            System.out.println(name+"的年龄为: "+age+"岁; 门票免费!\n");
        }
    }
}
import java.util.Scanner;

//测试类: 构建游客类对象,构建流程
public class TestVisitor {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Visitor v = new Visitor();
        boolean flag = true; //true: 输入不是n循环;反之是n退出程序

        do {
            System.out.print("请输入姓名: ");
            String name = input.next();
            if(!name.equals("n")){
                v.name = name;
                System.out.print("请输入年龄: ");
                int age = input.nextInt();
                v.age = age;

                //方法调用
                v.showPrice();
            }else{
                flag = false;
            }
        }while(flag);
        System.out.println("退出程序! ");
    }
}

例子2

//管理员类
public class Admin {
    //属性
    String userName;
    String passWord;

    //方法:输出管理员信息
    public void showInfo(){
        System.out.println("输出管理员的用户名为: "+userName+"; 密码为: "+passWord);
    }
}
import java.util.Scanner;

//管理员类的测试类
public class testAdmin {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        //管理员信息
        Admin admin = new Admin();
        admin.userName = "admin000";
        admin.passWord = "123456";
//        admin.showInfo();

        //修改管理员密码
        System.out.print("请输入用户名: ");
        String name = input.next();
        System.out.print("请输入密码: ");
        String pwd = input.next();
        if(admin.userName.equals(name) && admin.passWord.equals(pwd)){
            //输入用户名和密码正确,有权限修改密码
            System.out.print("\n请输入新密码: ");
            admin.passWord = input.next();
            System.out.println("修改密码成功,您的新密码为: "+admin.passWord);
        }else{
            //输入用户名和密码不正确,没有权限修改密码
            System.out.println("用户名和密码不匹配,您没有权限修改管理员信息。");
        }
    }
}

二、方法及方法重载

2.1 带参方法


注意点:



应用:

public class StudentMgr {
    //属性:存放学生姓名的数组
    String[] names = new String[30];

    //方法1:增加学生姓名
    public void addName(String name){
        for(int i=0; i<names.length; i++){
            if(names[i]==null){
                names[i] = name;
                System.out.println("插入学生姓名成功!");
                break;
            }
        }
    }

    //方法2:在固定区间内,查找某个学生
    public boolean searchName(int start, int end, String name){
        boolean flag = false;
        for(int i=start-1; i<end; i++){
            if(names[i].equals(name)){
                flag = true;
                break;
            }
        }
        return flag;
    }

    //方法3:显示本班学生信息
    public void showNames(){
        System.out.println("本班学员列表");
        for(int i=0; i<names.length; i++){
            if(names[i]!=null){
                System.out.print(names[i]+"\t");
            }else{
                break;
            }
        }
    }
}
import java.util.Scanner;

//测试学生信息管理
public class TestStudentMgr {
    public static void main(String[] args) {
        StudentMgr mgr = new StudentMgr();
        Scanner input = new Scanner(System.in);
        for(int i=0;i<5;i++){
            System.out.print("请输入第"+(i+1)+"个同学的姓名:");
            String name = input.next();
            mgr.addName(name);
        }
        mgr.showNames();
        //查找某个学生的信息
        System.out.print("\n请输入要开始查找的位置:");
        int start = input.nextInt();
        System.out.print("\n请输入要结束查找的位置:");
        int end = input.nextInt();
        System.out.print("\n请输入要查找的学生信息名:");
        String findName = input.next();

        boolean flag = mgr.searchName(start, end,  findName);
        if(flag){
            System.out.println("恭喜您,查到了该生姓名!");
        }else{
            System.out.println("对不起,没在该范围内查到该生姓名!");
        }
    }
}

基本数据类型 VS 引用数据类型(自定义数据类型 数组 接口)



对象数组

public class Student {
    //属性
    String name;
    int age;
    int score;

    //方法
    public void showInfo(){
        System.out.println(name+"的成绩是:"+score);
    }
}
public class Student {
    //属性
    String name;
    int age;
    int score;

    //方法
    public void showInfo(){
        System.out.println(name+"的成绩是:"+score);
    }
}
//操作学员成绩
public class ModifyScore {
    //修改小于60分的学生成绩
    public void modifyStuScore(Student[] stus){
        for(int i=0;i<stus.length;i++){
            if(stus[i].score<60){
                stus[i].score += 2;
            }
        }
    }
    //显示本组学生成绩信息
    public void showStus(Student[] stus){
        for(Student stu:stus){
            stu.showInfo();
        }
    }
}

2.2 构造方法

无参构造方法:



this关键字

public class Student {
    //属性
    String name;
    int age;
    int score;

    //无参构造方法:系统默认提供
    //一旦定义了带参的构造方法,无参构造方法系统不再默认提供无参构造方法,需要显式声明
    public Student(){}

    //带参构造方法: this指代当前对象
    public Student(String name, int score){
        this.name = name;
        this.score = score;
    }

    //this调用构造方法
    public Student(String name, int score, int age){
        /*this.name = name;
        this.score = score;*/
        //(1)调用构造方法Student(String name, int score)
        //(2)this调用构造方法必须放在第一行
        this(name, score);
        this.age = age;
    }

    //方法
    public void showInfo(){
        System.out.println(name+"的成绩是:"+score);
    }
    //this调用普通方法
    public void method1(){
        this.showInfo(); //等同于showInfo()
    }
}
Student s1 = new Student("张三",43);

2.3 方法重载

同一个类里,同名不同参的方法



//简易计算器
public class Calc {
    //加法:2个整数相加
    public void add(int num1, int num2){
        int sum = num1 + num2;
        System.out.println(num1+"+"+num2+"="+sum);
    }

    //加法:2个浮点相加
    public void add(double num1, double num2){
        double sum = num1 + num2;
        System.out.println(num1+"+"+num2+"="+sum);
    }

    //加法:3个浮点相加
    public void add(double num1, double num2, double num3){
        double sum = num1 + num2 + num3;
        System.out.println(num1+"+"+num2+"+"+num3+"="+sum);
    }

    public static void main(String[] args) {
        Calc calc = new Calc();
        calc.add(4,5);
        calc.add(7.0,8.0);
        calc.add(8.9,52);
    }
}

2.4 成员变量和局部变量

  • 在类声明的属性变量 叫成员变量(全局变量)
  • 方法类声明的变量,叫局部变量

方法参数也是一种局部变量


相关文章

网友评论

      本文标题:【JAVA学习笔记】类和对象的入门

      本文链接:https://www.haomeiwen.com/subject/lwunhltx.html