16.封装查询结果对象

  封装简单粗暴的理解就是:假设你在超市买苹果,买一个你可以一个手拿走,买两个你可以用两只手拿走,但是如果买了20个勒,咋办勒,那就用一个袋子装起来!这就 封装思想。

1.封装一个产品对象 Product.java

 package com.day01.station.model;

 /**
* Created by Administrator on 2018/2/9.
*/
public class Product {
/**
* 类里面有三样
* 1.字段
* 2.构造方法
* 3.普通方法 */ /**
* java里面取名称 规则 见名知意,驼峰命名 (当前来说除了类使用首字母大写的驼峰命名,其他都是首字母小写的驼峰命名)
*
* 封装一个字段
* private(权限) Integer(类型 int) id(名称)
*/
private Integer id; //id
private String productName; //产品名称
private Integer salePrice;
//提供get set 方法 public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getProductName() {
return productName;
} public void setProductName(String productName) {
this.productName = productName;
} public Integer getSalePrice() {
return salePrice;
} public void setSalePrice(Integer salePrice) {
this.salePrice = salePrice;
} // alt + insert @Override
public String toString() {
return "Product{" +
"id=" + id +
", productName='" + productName + '\'' +
", salePrice=" + salePrice +
'}';
}
}

  2.查询结果使用对象接收

  //查询
public Product query(int id) {
System.out.println("------我是查询方法----------");
Product product = new Product();//袋子
try {
//1.加载
Class.forName("com.mysql.jdbc.Driver");
//2.连接
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/station_demo", "root", "admin");
//3.创建编译语句
String sql = "SELECT id,product_name,sale_price FROM product WHERE id=?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1,id);
//4.执行语句
ResultSet resultSet = preparedStatement.executeQuery();
//解析结果
while (resultSet.next()){//如果有在执行里面
int id1 = resultSet.getInt("id");
String productName = resultSet.getString("product_name");
int salePrice = resultSet.getInt("sale_price");
//封装 袋子
//装
product.setId(id1);
product.setProductName(productName);
product.setSalePrice(salePrice);
}
//5.释放资源
resultSet.close();
preparedStatement.close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
return product;
}

17.面向对象之封装

1.对用户进行封装

 package com.day01.station.model;

 /**
* Created by Administrator on 2018/2/9.
*
* 用户的行为: 说 ==>方法表示 say()
*
* 用户的属性(字段): 年龄 性别 地址 姓名
*
*/
public class LoginUser {
// 用户的属性(字段): 年龄 性别 地址 姓名 private Integer age;
private String gender; // 男,女 ,妖 //私有化为 不能直接访问 ,那么间接访问 ==>提供一个方法
//提供一个设定值的方法
public void setGender(String gender){
this.gender=gender;
} public String getGender(){
return gender;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} //方法
public void say(){
System.out.println("--------我是一个用户------");
}
}

  2.测试封装后的对象

 package com.day01.station.testDao;

 import com.day01.station.model.LoginUser;

 import org.junit.Test;

 /**
* Created by Administrator on 2018/2/9.
*/
public class TestLoginUser {
@Test
public void test4(){
//1.拿到对象
LoginUser loginUser = new LoginUser();
//2.设置年龄
loginUser.setAge(18);
loginUser.setGender("男");
//3.取出来
Integer age = loginUser.getAge();
String gender = loginUser.getGender();
System.out.println(" age="+age+" gender="+gender); System.out.println("loginUser= "+loginUser);
}
@Test
public void test3(){
//1.拿到对象
LoginUser loginUser = new LoginUser();
//2.已经把 性别 gender私有化,不能直接访问 ,间接通过方法访问
// loginUser.gender="男" 不能这样访问
loginUser.setGender("男");
// String gender=loginUser.gender; //不能这样取, 提供一个方法间接取出
String gender = loginUser.getGender();
System.out.println(" gender=="+gender); System.out.println("loginUser= "+loginUser);
}
@Test
public void test2(){
//1.拿到对象
LoginUser loginUser = new LoginUser();
//2.给性别赋值
// loginUser.gender="空间上的方便快捷";
//3.取值
// String gender=loginUser.gender;
// System.out.println(" gender = "+gender);
}
@Test
public void test1(){
//1.拿到对象
LoginUser loginUser = new LoginUser();
//2.调用方法
loginUser.say();
//3.使用属性
// loginUser.age=28;//赋值
System.out.println("=loginUser=="+loginUser);
// Integer age = loginUser.age;
// System.out.println("==age=="+age);
}
}

18.构造方法

  

  测试:

  

19.面向对象之继承

  

    父类代码

 package com.day01.station.model;

 /**
* Created by Administrator on 2018/3/22.
*/
public class Base {
private Integer id;
private String type; //类型
private String state; //状态
private String createTime;
private String updateTime; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public String getState() {
return state;
} public void setState(String state) {
this.state = state;
} public String getCreateTime() {
return createTime;
} public void setCreateTime(String createTime) {
this.createTime = createTime;
} public String getUpdateTime() {
return updateTime;
} public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
}

    子类代码

 package com.day01.station.model;

 /**
* Created by Administrator on 2018/2/9.
*/
public class Product extends Base { private String productName; //产品名称
private Integer salePrice; //提供get set 方法
public String getProductName() {
return productName;
} public void setProductName(String productName) {
this.productName = productName;
} public Integer getSalePrice() {
return salePrice;
} public void setSalePrice(Integer salePrice) {
this.salePrice = salePrice;
}
}

03_java基础(七)之面向对象的更多相关文章

  1. python3.x 基础七:面向对象进阶

    类的高级方法: 1.静态方法:在类方法前增加关键字@staticmethod,将普通方法变成静态方法,不能再次传值,不能访问实例变量或者类变量,与类的关系仅仅是通过类名进行调用 2.类方法:在类方法前 ...

  2. C#基础总结之八面向对象知识点总结-继承与多态-接口

    .方法深入讲解(返回值,形参与实参) 方法 public int getName(int i,int j) { int sum = i + j; return sum; } .利用泛型存储对象数据 . ...

  3. C#基础总结之七面向对象知识点总结1

    class Class //定义一个类 名字是Class { ; string NAME; string deptName; ; //如果是常量 只能获取,不能赋值 public string Nam ...

  4. Bootstrap <基础七>按钮

    任何带有 class .btn 的元素都会继承圆角灰色按钮的默认外观.但是 Bootstrap 提供了一些选项来定义按钮的样式,具体如下表所示: 以下样式可用于<a>, <butto ...

  5. [.net 面向对象编程基础] (2) 关于面向对象编程

    [.net 面向对象编程基础]  (2)  关于面向对象编程 首先是,面向对象编程英文 Object-Oriented Programming 简称 OOP 通俗来说,就是 针对对象编程的意思 那么问 ...

  6. Java面试题精选(一)基础概念和面向对象

    --   基础概念和面向对象   --      全程将为大家剖析几大部分内容,由于学习经验有限,望大家谅解并接受宝贵的意见: 基础概念部分     ★★   : 常出现的高频率单词的区别理解(异常. ...

  7. C#_02.16_基础七_.NET表达式&运算符

    C#_02.16_基础七_.NET表达式&运算符 一.字面量: 字面量和变量的关系来理解字面量会比较简单: 因此字面量是源代码中键入已知的(我们知道它是多少的)值.也可以理解是等号右边的非创建 ...

  8. {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)

    Django基础七之Ajax 本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 一 Ajax简介 ...

  9. Java基础七-正则表达式

    Java基础七-正则表达式 一.定义: 特定的符号的组合 二.作用: 用于操作字符串数据 三.优缺点 简化代码,但是阅读性差 四.引入 4.1 问题 判断一个号码是否是QQ号? 不是零开头 6-15位 ...

  10. Java基础教程:面向对象编程[2]

    Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...

随机推荐

  1. 《机器学习实战》Logistic回归

    注释:Ng的视频有完整的推到步骤,不过理论和实践还是有很大差别的,代码实现还得完成 1.Logistic回归理论 http://www.cnblogs.com/wjy-lulu/p/7759515.h ...

  2. [UGUI]图文混排(七):动态表情

    帧动画脚本: http://www.cnblogs.com/lyh916/p/9194823.html 这里的动态表情,我使用的是固定间隔去刷新Image上的Sprite来实现的,即帧动画.这里可以将 ...

  3. 虚拟机中安装CentOS7

    初始安装: 1.安装新虚拟机时,选择稍后安装操作系统,这可以自己设置语言等信息 2.修改自定义硬件:为网卡生成一个mac地址,(这里需要注意,有时网卡会冲突,导致连接时好时坏,以后可以删除掉网卡,重新 ...

  4. 25.安装配置phantomjs

    1.官网下载windows版本:http://phantomjs.org/download.html2.下载完解压,将PhantomJS可执行文件配置到环境变量里.比如: 将 E:\Soft\soft ...

  5. Weblogic环境(JSP)文件下载问题(下载的文件与原文件大小不一致问题)

    最近发现一个问题有个download.jsp文件下载jsp在Tomcat下正常,在Weblogic下不太正常! Weblogic下载的文件比原文件大两个字节,查看文件像是文件内容最后多了空行 检查do ...

  6. linux的可中断sleep_on函数分析

    void interruptible_sleep_on (struct task_struct **p)// **p是个全局变量 { struct task_struct *tmp; if (!p)# ...

  7. django 使用mysql 数据库

    在 django 创建项目中 默认使用的是  splite3 数据库,不是mysql 数据库,要使用mysql ,要做一些配置: 在 settings.py 中修改如下: DATABASES = { ...

  8. 文件操作 freopen函数

    转自http://blog.csdn.net/zhuyi2654715/article/details/6963673 当我们求解acm题目时,通常在设计好算法和程序后,要在调试环境(例如VC等)中运 ...

  9. jquery 初始化数据 添加html 第一次玩0.0

    /** * Created by Eee_xiang on 2018/04/12. * 联动响应事件 */ (function () { $.linkEvent = function (options ...

  10. 6.面向对象 -类.md

    目录 1. static: 2. 类在内存中,每一个类在创建在栈内存中,当创建一个对象的时候,将非类变量再堆内存中创建,而类变量是不会因为创建对象而在堆中重新创建 3. 对象.引用和指针: 4. 类名 ...