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. Jscraft 使用 Shell 与预先加载别名混合使用

    Session session = a.getSessionShell("user", "pwd", "host"); Channel ch ...

  2. jquery前期总结,及实例

    一.元素查找 1.选择器 id=d------------------------------------------>$("#d") class=c1----------- ...

  3. Linux:常用命令【转载】

    转载于:https://www.cnblogs.com/yjd_hycf_space/p/7730690.html 系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架 ...

  4. hive 修复元数据命令 & 如何快速复制一张hive的分区表

    hive 元数据修复命令 msck repair table xxx; 也可以用于分区表的快速复制 例如你需要从线上往线下导一张分区表,但是网又没有连通,你需要如何操作呢? 1.复制建表语句 2.从线 ...

  5. 序列化 (实现RPC的基础)

    public interface ISerializer { <T> byte[] serializer(T obj); <T> T deSerializer(byte[] d ...

  6. 1. orcle 创建可扩展表空间

    1.创建表空间 a). create tablespace tablespacename datafile 'D:\tablespace\tablespacename.dbf' size 200m a ...

  7. kubernetes安装过程报错及解决方法

    1.your configuration file uses an old API spec: "kubeadm.k8s.io/v1alpha2". 执行kubeadm init ...

  8. node.js 递归创建多级目录

    fs.mkdir只能创建一级目录,所以我们可以自定义一个mkdirs函数,利用递归和回调来实现创建多级目录. function mkdirs(dirname, callback) { //检测目录是否 ...

  9. C++/C#:类Class与结构体Struct的区别

    C++中: 默认的访问控制.继承访问权限不同:struct时public的,class时 private的: 其它基本一样. C#中: struct是值类型,class是引用类型的: struct S ...

  10. python 阿狸的进阶之路(9)

    tcp传输: 传输需要ack回应,然后才清空缓存,服务端先起来. tcp流式协议,tcp的Nagle的优化算法,会将时间间隔短,数据量小的打包成一个,然后发送给对方,减少发送的次数. UDP协议: 不 ...