学习自华为开发者学院陈璇老师的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 成员变量和局部变量
- 在类声明的属性变量 叫成员变量(全局变量)
- 方法类声明的变量,叫局部变量
方法参数也是一种局部变量
网友评论