java学习第五课:java类与对象2(零基础)

1、return语句后面不能跟break语句

2、如果方法有返回值的情况下,所有的分支都必须有返回值

3.四种类型:

(1)无返回值无参数

void fun(){

}

(2)有返回值无参数

int fun() {
int a=1;
return a;//a与返回值类型相同
}

(3)无返回值有参数

void fun(int a,String b) {
	
}

(4)有返回值有参数

int fun(int a,String b) {
	return a;//a与返回值类型相同
}

4、成员变量和局部变量:

(1)成员变量:

类之中,方法之外

作用范围为当前类{ }

class A{//类

String time;//成员变量

String shape;//成员变量

}

(2)局部变量

方法之中或方法的参数

作用范围为当前方法

class A{//类

String time;//time为成员变量

void ding(String name){

String s1="初始时间为:";//s1为局部变量

String message=name+time+s1;//message、name也为局部变量

//name在前面进行过string定义

}

5、方法调用

(1)形参是创建方法时定义,实参是调用方法时传递

(2)实参形参不相关,只是进行值的传递

(3)形参可以多个,实参需要相对应-个数、类型都要对应

6、成员方法和构造方法

(1)成员方法:1.参数 2.返回类型

模板:返回值类型 函数名(参数){}

eg:int Coffee(int a,int b) {return 0;}

(2)构造方法:参数

模板:public Coffee(String a) {}


eg:Duck myDuck=new Duck();//实例化一只鸭子

new Duck-实际在调用的-构造函数

package test3;

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

public class test15 {
	public static void main(String[] args) throws UnsupportedEncodingException {
		D a = new D();// 3.new实例化对象时候,调用构造方法
		D a1 = new D("咖啡冻");
		D a2 = new D(8);
		D a3 = new D("咖啡冻", 8);//如果想要集合,则需要将其重新写一个a3
	}
}

//1.定义一个Dog类
class D {
	// 2.自定义一个构造方法 类名([参数]){}
	// 构造方法1-无参数构造方法
	D() throws UnsupportedEncodingException {
		PrintStream ps = new PrintStream(System.out, true, "UTF-8");
		ps.println("实例化一个D");
	}

	// 构造方法2-有参数构造方法-string
	D(String name) throws UnsupportedEncodingException {
		PrintStream ps = new PrintStream(System.out, true, "UTF-8");
		ps.println("实例化一个叫" + name + "的D");
	}

	// 构造方法3-有参数的构造方法-int
	D(int age) throws UnsupportedEncodingException {
		PrintStream ps = new PrintStream(System.out, true, "UTF-8");
		ps.println("实例化一个生产时间为" + age + "年的D");
	}

	// 构造方法4-有参数构造方法集合
	D(String name, int age) throws UnsupportedEncodingException {
		PrintStream ps = new PrintStream(System.out, true, "UTF-8");
		ps.println("实例化一个生产时间为" + age + "年,名字为" + name + "的D");
	}

}

7、方法的重载

方法重载条件:

(1)方法名相同

(2)参数不同:可以是   参数个数不同、参数数据类型不同、不同数据类型的参数顺序不同

注:方法重载与方法的返回值类型、参数名都无关

package test3;
//举个例子(方法重载和成员方法和构造方法
public class test16 {
public static void main(String[] args) {
	Coffee a=new Coffee();
	
}
}
class Coffee{
	//构造方法
	public Coffee() {}
	public Coffee(int a) {}
	public Coffee(int c) {}//因为只是参数名不同-a->c,所以不是方法重载
	public Coffee(int a,int b) {}
	public Coffee(int b,int a) {}//同一数据类型int,前后顺序不同,也不是方法重载
	public Coffee(String a) {}
	public Coffee(String a,int b) {}
	public Coffee(int b,String a) {}

	//成员方法
	void Coffee() {}
	void Coffee(int a) {}
	int Coffee(int a,int b) {return 0;}
	int Coffee(int b) {return 1;}//return不同,不能改变不是方法重载本质
	
	
}

题目练习:

一、学生卡类

定义表示学生卡的类,类名为StudentCard,属相包含:卡号、学号、学生姓名、余额等属性,编写两个带参的构造方法,一个构造方法实现给四个属性赋值,另外一个构造方法实现给卡号、学号和学生姓名三个属性赋值,编写一个方法,实现输出学生卡的基本信息的功能。编写主类使用StudentCard类创建对象,分别调用两个构造方法,创建两个学生卡,并调用对象的方法输出学生卡的信息。

【输出形式】

调用两个对象的输出学生卡基本信息功能方法,输出每个学生的基本信息,形式为卡号,姓名,学号,余额

【样例输出】

201800623,zhangxiaohua,20151250623,0
201800625,zhanghuahua,20151250601,100.00
//注;这道题我还没弄懂怎么添加两个卡,一个卡是可以的,但是两个卡就报错qwq
//让我再学习一下,再补充完善
package test3;

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

//实验五 作业题目
public class test17 {
	public static void main(String[] args) throws UnsupportedEncodingException {
		StudentCard a = new StudentCard();
		StudentCard a1 = new StudentCard("201800623", "zhangxiaohua", "20151250623", 0);

	}
}

class StudentCard {
	StudentCard() {
		String card;// 卡号
		String number;// 学号
		String name;// 学生姓名
		double money;// 余额
	}

	StudentCard(String card, String number, String name, double money) throws UnsupportedEncodingException {
		PrintStream ps = new PrintStream(System.out, true, "UTF-8");
		ps.println(card + "," + number + "," + name + "," + money);

	}

}

【问题描述】

public class Register {

public static void main(String[] args) throws UnsupportedEncodingException {

//用户类 对象名 = new 用户类();

//接收用户名 密码 手机号——控制台 scanner接收

//int a = 对象名.register();

// a 1 **用户注册成功   0**用户注册失败

}

}

//1.定义一个用户类

/* 用户名

 * 密码

 * 手机号

 * 注册-行为  函数  int register(参数){

      用户名赋值

      密码赋值

      手机号赋值

 * } 

 */
【输入形式】

用户名

密码

手机号

【输出形式】

** Register Success
【样例输入】

zhangsan

1234

122222
【样例输出】

zhangsan Register Success

补充:

输入输出·

//输入	
Scanner sc = new Scanner(System.in, "utf-8");
		PrintStream ps = new PrintStream(System.out, true, "utf-8");
//输出
PrintStream ps = new PrintStream(System.out, true, "utf-8");
		System.out.println(color + shape + weight + "的闹钟,正在响铃");

题目解答:

package test3;

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;

public class test18 {
	public static void main(String[] args) throws UnsupportedEncodingException {
		U a1 = new U();// 用户类 对象名=new 用户类();

		Scanner sc = new Scanner(System.in, "utf-8");// 接受收用户名等
		a1.a = sc.nextInt();
		a1.name = sc.next();
		a1.phonenumber = sc.next();
		a1.passworld = sc.next();
		a1.ding(null, null, null);

	}
}

class U {
	int a;
	String name;
	String passworld;
	String phonenumber;

	void ding(String name, String passworld, String phonenumber) throws UnsupportedEncodingException {

		if (a == 1) {
			PrintStream ps = new PrintStream(System.out, true, "utf-8");
			ps.print(name + "Register Success");

		} else {
			if (a == 0) {
				PrintStream ps = new PrintStream(System.out, true, "utf-8");
				ps.println(name + "Register false");
			}

			else {
				PrintStream ps = new PrintStream(System.out, true, "utf-8");
				ps.println("输入错误");
			}
		}
	}

}

this关键字

this.name=name;

局部变量

static:

1.修饰成员变量

如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类。多个对象共享同一份数据。

static修饰成员方法:

一旦使用static 修饰成员方法,那么这就成为了静态方法。静态方法不属于对象,而是属于类的。

如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它。

如果有了static关键字,那么不需要创建对象,直接就能通过类名称来使用它。

静态方法推荐通过类名称进行调用

无论是成员变量,还是成员方法。如果有了static ,都推荐使用类名称进行调用

静态变量:类名称.静态变量

静态方法:类名称.静态方法()

注意:对于本类当中的静态方法,可以省略类名称

(如带类中main函数中调用自定义函数,可以省略类名称)
注意:

1、静态不能直接调用非静态。

原因:因为在内存当中是【先】有的静态内容,【后】有的静态内容

2、静态方法中,不能调用this

原因:this代表当前对象,通过谁调用的方法,谁就是当前对象
 

public class 类名称{

      static{

     //静态代码块

       }  

}

特点:当第一次用到本类时,静态代码块执行唯一的一次

           静态内容总是优于非静态,所以镜头代码块比构造方法先执行

静态代码块的典型用途:

用来一次性地对静态成员变量进行赋值

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学生类的定义: 在Java中,我们可以通过定义一个类来表示一个学生。一个学生类可以包含以下属性: 1. 学生的姓名(name) 2. 学生的年龄(age) 3. 学生的性别(gender) 4. 学生的学号(id) 5. 学生的班级(class) 我们可以通过以下代码来定义一个学生类: public class Student { // 定义学生类的属性 private String name; private int age; private String gender; private String id; private String clazz; // 定义学生类的构造方法 public Student(String name, int age, String gender, String id, String clazz) { this.name = name; this.age = age; this.gender = gender; this.id = id; this.clazz = clazz; } // 定义学生类的方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getClazz() { return clazz; } public void setClazz(String clazz) { this.clazz = clazz; } } 在上面的代码中,我们定义了一个名为Student的类,它包含了五个属性:name、age、gender、id和clazz。我们还定义了一个构造方法,用于初始化这些属性。此外,我们还定义了一些方法,用于获取和设置这些属性的值。这些方法被称为getter和setter方法。通过这些方法,我们可以在程序中访问和修改学生对象的属性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值