03_java基础(七)之面向对象
16.封装查询结果对象
封装简单粗暴的理解就是:假设你在超市买苹果,买一个你可以一个手拿走,买两个你可以用两只手拿走,但是如果买了20个勒,咋办勒,那就用一个袋子装起来!这就 封装思想。
1.封装一个产品对象 Product.java
1 package com.day01.station.model; 2 3 /** 4 * Created by Administrator on 2018/2/9. 5 */ 6 public class Product { 7 /** 8 * 类里面有三样 9 * 1.字段 10 * 2.构造方法 11 * 3.普通方法 12 13 */ 14 15 /** 16 * java里面取名称 规则 见名知意,驼峰命名 (当前来说除了类使用首字母大写的驼峰命名,其他都是首字母小写的驼峰命名) 17 * 18 * 封装一个字段 19 * private(权限) Integer(类型 int) id(名称) 20 */ 21 private Integer id; //id 22 private String productName; //产品名称 23 private Integer salePrice; 24 //提供get set 方法 25 26 27 public Integer getId() { 28 return id; 29 } 30 31 32 public void setId(Integer id) { 33 this.id = id; 34 } 35 36 public String getProductName() { 37 return productName; 38 } 39 40 public void setProductName(String productName) { 41 this.productName = productName; 42 } 43 44 public Integer getSalePrice() { 45 return salePrice; 46 } 47 48 public void setSalePrice(Integer salePrice) { 49 this.salePrice = salePrice; 50 } 51 52 // alt + insert 53 54 @Override 55 public String toString() { 56 return "Product{" + 57 "id=" + id + 58 ", productName='" + productName + '\'' + 59 ", salePrice=" + salePrice + 60 '}'; 61 } 62 }
2.查询结果使用对象接收
1 //查询 2 public Product query(int id) { 3 System.out.println("------我是查询方法----------"); 4 Product product = new Product();//袋子 5 try { 6 //1.加载 7 Class.forName("com.mysql.jdbc.Driver"); 8 //2.连接 9 Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/station_demo", "root", "admin"); 10 //3.创建编译语句 11 String sql = "SELECT id,product_name,sale_price FROM product WHERE id=?"; 12 PreparedStatement preparedStatement = connection.prepareStatement(sql); 13 preparedStatement.setInt(1,id); 14 //4.执行语句 15 ResultSet resultSet = preparedStatement.executeQuery(); 16 //解析结果 17 while (resultSet.next()){//如果有在执行里面 18 int id1 = resultSet.getInt("id"); 19 String productName = resultSet.getString("product_name"); 20 int salePrice = resultSet.getInt("sale_price"); 21 //封装 袋子 22 //装 23 product.setId(id1); 24 product.setProductName(productName); 25 product.setSalePrice(salePrice); 26 } 27 //5.释放资源 28 resultSet.close(); 29 preparedStatement.close(); 30 connection.close(); 31 } catch (Exception e) { 32 e.printStackTrace(); 33 } 34 return product; 35 }
17.面向对象之封装
1.对用户进行封装
1 package com.day01.station.model; 2 3 /** 4 * Created by Administrator on 2018/2/9. 5 * 6 * 用户的行为: 说 ==>方法表示 say() 7 * 8 * 用户的属性(字段): 年龄 性别 地址 姓名 9 * 10 */ 11 public class LoginUser { 12 // 用户的属性(字段): 年龄 性别 地址 姓名 13 14 private Integer age; 15 private String gender; // 男,女 ,妖 16 17 //私有化为 不能直接访问 ,那么间接访问 ==>提供一个方法 18 //提供一个设定值的方法 19 public void setGender(String gender){ 20 this.gender=gender; 21 } 22 23 public String getGender(){ 24 return gender; 25 } 26 27 public Integer getAge() { 28 return age; 29 } 30 31 public void setAge(Integer age) { 32 this.age = age; 33 } 34 35 //方法 36 public void say(){ 37 System.out.println("--------我是一个用户------"); 38 } 39 }
2.测试封装后的对象
1 package com.day01.station.testDao; 2 3 import com.day01.station.model.LoginUser; 4 5 import org.junit.Test; 6 7 /** 8 * Created by Administrator on 2018/2/9. 9 */ 10 public class TestLoginUser { 11 @Test 12 public void test4(){ 13 //1.拿到对象 14 LoginUser loginUser = new LoginUser(); 15 //2.设置年龄 16 loginUser.setAge(18); 17 loginUser.setGender("男"); 18 //3.取出来 19 Integer age = loginUser.getAge(); 20 String gender = loginUser.getGender(); 21 System.out.println(" age="+age+" gender="+gender); 22 23 System.out.println("loginUser= "+loginUser); 24 } 25 @Test 26 public void test3(){ 27 //1.拿到对象 28 LoginUser loginUser = new LoginUser(); 29 //2.已经把 性别 gender私有化,不能直接访问 ,间接通过方法访问 30 // loginUser.gender="男" 不能这样访问 31 loginUser.setGender("男"); 32 // String gender=loginUser.gender; //不能这样取, 提供一个方法间接取出 33 String gender = loginUser.getGender(); 34 System.out.println(" gender=="+gender); 35 36 System.out.println("loginUser= "+loginUser); 37 } 38 @Test 39 public void test2(){ 40 //1.拿到对象 41 LoginUser loginUser = new LoginUser(); 42 //2.给性别赋值 43 // loginUser.gender="空间上的方便快捷"; 44 //3.取值 45 // String gender=loginUser.gender; 46 // System.out.println(" gender = "+gender); 47 } 48 @Test 49 public void test1(){ 50 //1.拿到对象 51 LoginUser loginUser = new LoginUser(); 52 //2.调用方法 53 loginUser.say(); 54 //3.使用属性 55 // loginUser.age=28;//赋值 56 System.out.println("=loginUser=="+loginUser); 57 // Integer age = loginUser.age; 58 // System.out.println("==age=="+age); 59 } 60 }
18.构造方法
测试:
19.面向对象之继承
父类代码
1 package com.day01.station.model; 2 3 /** 4 * Created by Administrator on 2018/3/22. 5 */ 6 public class Base { 7 private Integer id; 8 private String type; //类型 9 private String state; //状态 10 private String createTime; 11 private String updateTime; 12 13 public Integer getId() { 14 return id; 15 } 16 17 public void setId(Integer id) { 18 this.id = id; 19 } 20 21 public String getType() { 22 return type; 23 } 24 25 public void setType(String type) { 26 this.type = type; 27 } 28 29 public String getState() { 30 return state; 31 } 32 33 public void setState(String state) { 34 this.state = state; 35 } 36 37 public String getCreateTime() { 38 return createTime; 39 } 40 41 public void setCreateTime(String createTime) { 42 this.createTime = createTime; 43 } 44 45 public String getUpdateTime() { 46 return updateTime; 47 } 48 49 public void setUpdateTime(String updateTime) { 50 this.updateTime = updateTime; 51 } 52 }
子类代码
1 package com.day01.station.model; 2 3 /** 4 * Created by Administrator on 2018/2/9. 5 */ 6 public class Product extends Base { 7 8 private String productName; //产品名称 9 private Integer salePrice; 10 11 //提供get set 方法 12 public String getProductName() { 13 return productName; 14 } 15 16 public void setProductName(String productName) { 17 this.productName = productName; 18 } 19 20 public Integer getSalePrice() { 21 return salePrice; 22 } 23 24 public void setSalePrice(Integer salePrice) { 25 this.salePrice = salePrice; 26 } 27 }