学习总结
什么是类
类:是一组相关属性和行为的集合。可以看成是一 类事物的模板,使用事物的属性特征和行为特征来描述该类事物。现实中,描述-类事物:
属性:就是该事物的状态信息。
行为:就是该事物能够做什么。
举例:小猫。
属性:名字、体重、年龄、颜色。
行为:走、跑、叫。
什么是对象
对象:是一类事物的具体体现。对象是类的一个实例(对象并不是找个女朋友) ,必然具备该类事物的属性和行为。现实中,-类事物的一个实例: - -只小猫。
举例: - -只小猫。
类与对象的关系:
1、类是对一类事物的描述,是抽象的。
2、对象是类事物的实例,是具体的。
3、类是对象的模板,对象是类的实体。
定义:
定义类:就是定义类的成员,包括成员变量和成员方法。
成员变量:和以前定义变量几乎是一样的。只不过位置发生了改变。在类中,方法外。
成员方法:和以前定义方法几乎是一 样的。只不过把static去掉,static的作用在面向对象后面课程中再详细讲解。
1.导包也就是指出需要使用的类,在什么位置。
import 包名称类名称;
对于和当前类属于同一个包的情况,可以省略导包语句不写。
2.创建,格式:
类名称 对象名= new 类名称();
例如:Student stu = new Student( );
3.使用,分为两种情况:
使用成员变量:对象名.成员变量名
使用成员方法:对象名.成员方法名(参数)
注意事项:
如果成员变量没有进行赋值,那么将会有一一个默认值, 规则和数组-样。
构造方法是专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。
格式:
public 类名称(参数类型参数名称) {
方法体
}
注意事项:
1.构造方法的名称必须和所在的类名称完全样,就连大小写也要一-样
2.构造方法不要写返回值类型,连void都不写
3.构造方法不能return一个具体的返回值
4.如果没有编写任何构造方法,那么编译器将会默认赠送一个构造方法, 没有参数、方法体什么事情都不做。
public Student() {}
5.一旦编写了至少一一个构造方法,那么编译器将不再赠送。
'static'
如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类。多个对象共享同一份数据。
一旦使用static修饰成员方法, 那么这就成为了静态方法。静态方法不属于对象,而属于类的。如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它。如果有了static关键字,那么不需要创建对象,直接就能通过类名称来使用它。无论是成员变量,还是成员方法。如果有了static, 都推荐使用类名称进行调用。
静态变量:类名称.静态变量
静态方法:类名称.静态方法()
静态方法当中不能使用this
一、实验目的
(1) 掌握类的定义,熟悉属性、构造函数、方法的作用,掌握用类作为类型声明变量和方法返回值;
(2)理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性;
(3)理解static修饰付对类、类成员变量及类方法的影响。
二、实验内容
1.写一个名为Rectangle的类表示矩形。其属性包括宽width、高height和颜色color, width 和height都是double型的,而color 则是String 类型的。要求该类具有:
(1)使用构造函数完成各属性的初始赋值
(2)使用gt.()和set...()的形式完成属性的访问及修改
(3)提供计算面积的getArea()方法和计算周长的getLength()方法
2.银行的账户记录 Account有账户的唯一-性标识 (11 个长度的字符和数字的组合),用户的姓名,开户日期,账户密码(六位的数字,可以用0开头),当前的余额。银行规定新开一一个账户时,银行方面提供-一个标识符、账户初始密码123456,客户提供姓名,开户时客户可以直接存入一笔初始账户金额,不提供时初始余额为0。定义该类,并要求该类提供如下方法:存款、取款、变更密码、可以分别查询账户的标识、姓名、开户日期、当前余额等信息。
package pta.two;
public class Rectangle {
private double width;
private double height;
private String color;
public Rectangle() {
}
public Rectangle(double width, double height, String color) {
this.width = width;
this.height = height;
this.color = color;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
定义一个构造方法和Rectangle类
package pta.two;
import java.util.Random;
public class testRectangleS {
public static void main(String[] args) {
Random s=new Random();
double randomwidth=s.nextDouble();
System.out.println("随机高:"+randomwidth);
double randomheigth=s.nextDouble();
System.out.println("随机宽:"+randomheigth);
System.out.println("面积="+getArea(randomheigth,randomwidth));
System.out.println("周长="+getLength(randomheigth,randomwidth));
}
public static double getArea(double a,double b) {
double area=a*b;
return area;
}
public static double getLength(double c,double d){
double length=2*c+2*d;
return length;
}
在这里我用的是Random类,也即是电脑随机给的数值,并没有自己赋值;
运行结果:
package pta.two;
public class Bank {
private String num;//账号标识
private double money;//存款取款额度
private int password;//密码
private String name;//姓名
private String day;//开户日期
private double balance;//余额
public Bank() {
}
public Bank(String acount, double money, int password, String name, String day, double balance) {
this.num = acount;
this.money = money;
this.password = password;
this.name = name;
this.day = day;
this.balance = balance;
}
public String getAcount() {
return num;
}
public void setAcount(String acount) {
this.num = acount;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public double getPassword() {
return password;
}
public void setPassword(int password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
package pta.two;
import java.util.Scanner;
public class testBank {
public static void main(String[] args) {
Scanner name = new Scanner(System.in);
String df = name.next();
System.out.println("name:" + df);
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
System.out.println("money:" +revisemoney(x));
System.out.println("输入原密码:");
Scanner m = new Scanner(System.in);
int w = m.nextInt();
System.out.println("请输入新密码:");
Scanner mi = new Scanner(System.in);
int ma = mi.nextInt();
System.out.println("请确定新密码:");
Scanner password = new Scanner(System.in);
int pw = password.nextInt();
int i=0;
if ((w == 123456)&&(ma==pw)) {
System.out.println("已修改密码为:" + resivepassword(w,ma));
w = pw;
i=i+1;
}
else{
System.out.println("密码不对");
}
}
private static int revisemoney(int a) {
int sum=0;
sum=sum+a;
return a;
}
private static int resivepassword(int p, int q)
{
p=q;
return p;
}
}
本题
初步运行结果:存款,修改密码。
进一步代码:
package pta.two;
import java.util.Scanner;
public class testBank {
public static void main(String[] args) {
String[] array = new String[]{"430321ha123"};
System.out.println("输入你的标识:");
Scanner num = new Scanner(System.in);
String ac = num.next();
if (ac.equals("430321ha123")) {
System.out.println("输入你的姓名:");
Scanner name = new Scanner(System.in);
String df = name.next();
if (df.equals("黄安") || df.equals("huangan")) {
System.out.println("name:" + " " + df + " " + ac);
System.out.print("存款:");
Scanner sc = new Scanner(System.in);
int money = sc.nextInt();
System.out.println("余额:" + revisemoney(money));
System.out.print("取款:");
Scanner e = new Scanner(System.in);
int f = e.nextInt();
if (f <= money)
System.out.println("余额:" + plasemoney(f, money));
else {
System.out.println("对不起!你的余额不足");
}
System.out.println("输入原密码:");
Scanner m = new Scanner(System.in);
int w = m.nextInt();
if(w==123456)
{
System.out.println("请输入新密码:");
Scanner mi = new Scanner(System.in);
int ma = mi.nextInt();
System.out.println("请确定新密码:");
Scanner password = new Scanner(System.in);
int pw = password.nextInt();
int i = 0;
if (ma == pw) {
System.out.println("已修改密码为:" + resivepassword(w, ma));
w = pw;
i = i + 1;
}
else{
System.out.println("新密码不准确!");System.exit(0);
}
}
else{
System.out.println("原密码不对");System.exit(0);
}
System.out.println("今日账户变动时间:");
Scanner day = new Scanner(System.in);
String rq = day.next();
System.out.println("账户变动日期:" + rq);
} else {
System.out.println("姓名不准确!");
}
}
else{
System.out.println("标识不正确!");
}
}
private static int revisemoney(int a) {
int sum=0;
sum=sum+a;
return a;
}
private static int resivepassword(int p, int q)
{
p=q;
return p;
}
private static int plasemoney(int b,int money){
return money-b;
}
}
最终运行结果(算法和变量都有):