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. 安全测试1_Web知识简介

    接下去所有的安全测试都是本人学习安全测试的过程,随笔中会截取云课堂视频中的图片(比较生动和形象,便于理解),主要目的是方便自己以后复习和巩固! 1.Web发展阶段概述: 2.web安全我能提发展形势: ...

  2. android 开发 singleTask启动模式下传值的坑

    日常填坑. 做了什么操作引起的?如下: 在活动A 启动模式设置为singleTask ,然后再用活动A启动活动B,活动B启动活动C. 现在我的活动C要使用intent携带值去启动活动A.在活动A中正常 ...

  3. java 类拷贝

    直接上代码:public class Demo { public static void main(String[] args) throws CloneNotSupportedException { ...

  4. html内容溢出部分...

    首先标签必须满足不是行内标签 方法一:(单行)此方法没有任何问题 width: 38px;(需要给定宽度) overflow: hidden; white-space: nowrap; text-ov ...

  5. uva-10763-交换生

    题意:有一个交换生由A->B,想交换得有一个B->A,问,是不是所有人都能交换成. 俩个数字交换偶数次还是自身,开一个数组mark,模拟完所有样例后,看数组是不是还是初始化数组. #inc ...

  6. bash-4.2$ bash: /home/test/.bashrc: 权限不够

    解决办法:https://blog.csdn.net/qq_38417808/article/details/81705559

  7. 64位操作系统(Windows 2008 R2 X64)ASP.NET 调用32位Excel,word 出现401 – 未授权: 由于凭据无效,访问被拒绝。

    先确保IIS设置正确,目录权限设置正确. 打开“IIS信息服务管理器”——>选择你发布的网站——>选择功能视图中的“身份验证”——>右键匿名身份验证,选择“编辑”,选择“特定用户“– ...

  8. ansible常用模块即用法

    Linux 中,我们可以通过 ansible-doc -l 命令查看到当前 ansible 都支持哪些模块,通过 ansible-doc  -s  模块名  又可以查看该模块有哪些参数可以使用. 下面 ...

  9. 01.GOF设计模式_概述

    0.Abstract Fcatory 提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类. 1. Adapter 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原 ...

  10. android stuido的代码排版的快捷建CTRL+ALT+L

    CTRL+ALT+L 需要主要留意的地方是QQ的与其冲突的 我将qq的中快捷方式给去除