从入门到放弃的第二周(面向对象)......day.7。。。。。包,修饰符,关键字;
1,包
- 组织代码,避免命名冲突
- 使用域名反写的方式命名包,包的层次与文件系统保持一致
JDK里面的包:
java.io:处理IO操作
java.nio:New IO
java.lang:基础类
java.math:算术运算
java.net:网络编程
java.sql:关系数据库的操作
java.time:日期时间操作
java.util:集合框架,工具类
使用包中的类,接口....
import package.*;
import package.class;
在使用不同的包中相同名的类时,可以使用全限定名使用该类
特别注意:在java.lang中的类,无需显式导入
静态导入:import static package.class.staticFiled/staticMethod
Eclipse; Ctrl+Shift+O 优化导入
导入不识别的类
移除导入的但未使用的类
按照一定的规则排序导入语句
2,访问控制修饰符
private:它可以修饰属性(成员),方法,类(内部类),意味着修饰的属性或方法只能在本类中访问到,达到封装的目的
default:没有关键字,可以修饰属性,方法,类, 意味着修饰的属性,方法或类,只能在本包访问到
protected,(多是父子内的调用限定)
public:它可以修饰属性(成员),方法,类,意味着修饰的属性,方法或类可以被任何代码访问
设计原则:从最严格的访问控制(private)开始,然后使用访问控制更大的关键字
实际开发:绝大部分的类是public,类中的方法大部分是public
目前建议:属性一定使用private,使用public的setter与getter来获取值。
关于属性的命名:1,不要使用单个字母(如:n);2,不要使用只有一个小写字母开头的属性(uName)
建议:1.名词,2,至少开头的两个字母小写 3,多个单词,第二个单词开始首字母大写
1,声明一个用户(User)类,属性有姓名(name),性别(gender),出生年月(birthdate:1990-01-02)
2,声明一个用户管理(UserManager)类,其中声明一个大小为10的用户数组(users)作为其属性
定义方法add(User)将用户依次增加到users中,当数组已满时,产生一个新的大小为原数组1.5倍的数组(扩容),将原来的用户及新加的用户保存进去,实际上就产生了一个动态增加容量的数组(ArrayList)
3,编写测试类,在main方法中测试
public class User {
private String name;
private String gender;
private String birthdate;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getBirthdate() {
return birthdate;
}
public void setBirthdate(String birthdate) {
this.birthdate = birthdate;
}
}
public class UserManager {
private User[] users = new User[2];
private int num = 0;
public void add(User u) {
if (num == users.length - 1) {
User[] x = new User[users.length * 3 / 2];
for (int i = 0; i < users.length; i++) {
x[i] = users[i];
}
users = x;
}
users[num] = u;
num++;
}
public void show() {
for (int i = 0; i < num; i++) {
System.out.print(users[i].getName() + " ");
System.out.print(users[i].getBirthdate() + " ");
System.out.print(users[i].getGender() + " ");
}
}
}
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
UserManager userManager=new UserManager();
User user1=new User();
User user2=new User();
user1.setBirthdate("19980101");
user1.setGender("男");
user1.setName("suxiao");
userManager.add(user1);
userManager.show();
System.out.print("\n");
user2.setBirthdate("19980101");
user2.setGender("男");
user2.setName("suxiao");
userManager.add(user2);
userManager.show();
System.out.print("\n");
User user3=new User();
user3.setBirthdate("19980101");
user3.setGender("男");
user3.setName("suxiao");
userManager.add(user3);
userManager.show();
}
}
3,static关键字
使用场景:
1 修饰属性:所有的实例共享该属性,调用时无需实例化,直接使用类名.属性,适用于保存系统全局变量
2 修饰方法: 调用时无需实例化,直接使用类名.方法,适用于实现独立的工具方法
3 静态导入:
4 静态代码块
5 静态内部类
4,构造方法
语法:方法名与所在的类名完全一样,没有返回值类型,其他与普通方法一致
作用:对实例进行初始化:属性赋初始值,读取默认参数....
特点:如果没有显式的构造方法,编译器会默认创建一个无参的构造方法,其访问控制修饰符与类一致
如果有显式的构造方法,则默认无参构造方法就不存在
用法:使用new调用,或者使用super调用
TM:
功能:
1:用户注册
2,用户登录
3,查询余额
4,存款
5,取款
6,转账
7,退出
类设计:
用户
用户操作类
业务操作类
全局数据保存类
测试类
public class User {
private String name;
private String password;
private double balance;
private boolean islogin;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public boolean isIslogin() {
return islogin;
}
public void setIslogin(boolean islogin) {
this.islogin = islogin;
}
}
public class Userpro {
public void yanzheng(User u) {
for (int i = 0; i < database.num; i++) {
if (database.users[i].getName().equals(u.getName())) {
System.out.println("用户已存在");
return;
}
}
database.users[database.num] = u;
database.users[database.num].setBalance(0);
database.num++;
System.out.print("用户注册成功");
}
public void login(String name,String password){
int x=0;
for (int i = 0; i < database.users.length; i++) {
if(database.users[i].getName().equals(name)){
if(database.users[i].getPassword().equals(password)){
database.users[i].setIslogin(true);
System.out.print("登陆成功");
x=1;
break;
}
}
}
if(x==0){System.out.print("cowu");}
}
}
public class Yewuopr {
public void in(String name, double money) {
for (int i = 0; i < database.num; i++) {
if (database.users[i].getName().equals(name)) {
database.users[i].setBalance(money+database.users[i].getBalance());
System.out.print("存钱成功");
break;
}
}
}
public void out(String name, double money) {
for (int i = 0; i < database.num; i++) {
if (database.users[i].getName().equals(name)) {
database.users[i].setBalance(database.users[i].getBalance()-money);
System.out.print("取钱成功");
break;
}
}
}
public void show(){
for (int i = 0; i < database.num; i++){
System.out.print(database.users[i].getBalance());
}
}
public void zz(String name, String name2,double money) {
int p=0;
int q=0;
for (int i = 0; i < database.num; i++) {
if (database.users[i].getName().equals(name)) {
p=1;q=i;
}
}
if(p==1){for (int i = 0; i < database.num; i++) {
if (database.users[i].getName().equals(name2)) {
database.users[q].setBalance(database.users[q].getBalance()-money);
database.users[i].setBalance(database.users[i].getBalance()+money);
System.out.print("zhuan钱成功");
break;
}
}
}
}
}
public class database {
static User[] users=new User[10];
static int num=0;
}
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
Userpro userpro=new Userpro();
Yewuopr yewuopr=new Yewuopr();
while(true){
System.out.print("请选择操作 1,注册,2,登录");
int x=scanner.nextInt();
if(x==1){
User user1=new User();
System.out.print("用户名");
user1.setName(scanner.next());
System.out.print("密码");
user1.setPassword(scanner.next());
userpro.yanzheng(user1);
System.out.print("\n");
}
else {
User user1=new User();
System.out.print("用户名");
String name=scanner.next();
System.out.print("密码");
String password=scanner.next();
userpro.login(name, password);
System.out.print("\n");
while(true){
System.out.print("选择业务 1,存款,2,取款 ,3,转账 4展示");
int x1=scanner.nextInt();
if(x1==1){
System.out.print("用户名 金额");
String name1=scanner.next();
double money=scanner.nextDouble();
yewuopr.in(name1, money);
System.out.print("\n");
}else if(x1==2){
System.out.print("用户名 金额");
String name1=scanner.next();
double money=scanner.nextDouble();
yewuopr.out(name1, money);
System.out.print("\n");
}else if(x1==4){
yewuopr.show();
System.out.print("\n");
}else if(x1==3){
System.out.print("用户名 用户名 金额");
String name1=scanner.next();
String name2=scanner.next();
double money=scanner.nextDouble();
yewuopr.zz(name1,name2, money);
System.out.print("\n");
}
}
}
}
}
}
现 在一个作业要写好长。。。。。。。。。。。。看着好累


浙公网安备 33010602011771号