zoukankan      html  css  js  c++  java
  • 从入门到放弃的第二周(面向对象)......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("
    ");
    		
    		user2.setBirthdate("19980101");
    		user2.setGender("男");
    		user2.setName("suxiao");
    		userManager.add(user2);
    		userManager.show();
    		System.out.print("
    ");
    		
    		
    		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("
    ");
            	   }
            	   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("
    ");
            		   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("
    ");
            		   }else if(x1==2){
            			   System.out.print("用户名 金额");
            			   String name1=scanner.next();
            			   double money=scanner.nextDouble();
            			   yewuopr.out(name1, money);
            			   System.out.print("
    ");
            		   }else if(x1==4){
            			   yewuopr.show();
            			   System.out.print("
    ");
        		       }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("
    ");    		    	   
        		       }
            		        		           		   				}      		   
            		   }       		         	   
            	   }       	   
               }
    	}
    

      

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

                                           

           

      

  • 相关阅读:
    练习题
    作业2.6-2.15 两次作业
    11.13(2)
    11.13
    11.6
    10.30
    10.15
    10.9
    9.25号作业
    9.18号
  • 原文地址:https://www.cnblogs.com/suxiao666/p/11334486.html
Copyright © 2011-2022 走看看