从入门到放弃的第二周(面向对象)......day.7。。。。。包,修饰符,关键字;

 

1,包

 

  1. 组织代码,避免命名冲突
  2. 使用域名反写的方式命名包,包的层次与文件系统保持一致

 

 

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");    		    	   
    		       }
        		        		           		   				}      		   
        		   }       		         	   
        	   }       	   
           }
	}

  

                                               现 在一个作业要写好长。。。。。。。。。。。。看着好累

                                       

       

  

猜你喜欢

转载自www.cnblogs.com/suxiao666/p/11334486.html