Java封装和封装的案例

Java封装和封装的案例

目录

一、Java封装知识点简介

二、Java程序中的包

三、static关键字、代码块

四、封装的综合应用案例:


一、Java封装知识点简介

1、面向对象三大特性之封装的概念:

  • 隐藏类的某些内部细节,不允许外部程序直接访问
  • 隐藏某些细节的类提供某些公共方法,对隐藏的内部细节进行访问和修改
  • 隐藏对象的信息
  • 留出访问的接口

2、封装的特征:

  • 只能通过类提供的方法访问和修改数据
  • 隐藏类的实现细节,方便修改和实现

3、封装的实现步骤:

(1)、步骤:第一、修改属性的修饰符为private;第二、创建get/set方法来访问和修改属性值;第三、在get/set方法中添加控制语句规范代码

(2)封装实现代码示例:创建getter/setter方法可以通过【源码】——【生成getter/setter方法来自动创建】

package com.imooc.model;

public class Student {
	private String studentNo;
	private String studentName;
	private String studentSex;
	private int studentAge;
	//方案三,将学科对象作为属性
	private Subject subject;
	
	public Subject getSubject() {
		if(subject==null)
			subject=new Subject();
		return subject;
	}
	public void setSubject(Subject subject) {
		this.subject = subject;
	}
	//无参构造
	public Student() {
		
	}
	//多参构造,实现对全部属性的赋值
	public Student(String studentNo,String studnetName,String studentSex,int studentAge) {
		this.setStudentNo(studentNo);
		this.setStudentName(studnetName);
		this.setStudentSex(studentSex);
		this.setStudentAge(studentAge);
	}
	//将Subject对象初始化的构造函数
	public Student(String studentNo,String studnetName,String studentSex,int studentAge,Subject subject) {
		this.setStudentNo(studentNo);
		this.setStudentName(studnetName);
		this.setStudentSex(studentSex);
		this.setStudentAge(studentAge);
		this.setSubject(subject);
	}
	public String getStudentNo() {
		return studentNo;
	}
	public void setStudentNo(String studentNo) {
		this.studentNo = studentNo;
	}
	public String getStudentName() {
		return studentName;
	}
	public void setStudentName(String studentName) {
		this.studentName = studentName;
	}
	public Str
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基于Android SQLite数据库的封装示例: 1. 创建DatabaseHelper ```java public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "mydatabase.db"; private static final int DATABASE_VERSION = 1; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建表格 String createTable = "CREATE TABLE IF NOT EXISTS mytable" + " (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"; db.execSQL(createTable); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 升级数据库 db.execSQL("DROP TABLE IF EXISTS mytable"); onCreate(db); } } ``` 2. 创建DatabaseManager ```java public class DatabaseManager { private static DatabaseManager instance; private SQLiteDatabase database; private DatabaseHelper dbHelper; public static synchronized void initialize(Context context) { if (instance == null) { instance = new DatabaseManager(); instance.dbHelper = new DatabaseHelper(context); } } public static synchronized DatabaseManager getInstance() { if (instance == null) { throw new IllegalStateException(DatabaseManager.class.getSimpleName() + " is not initialized, call initialize(..) method first."); } return instance; } public synchronized SQLiteDatabase openDatabase() { if (database == null) { database = dbHelper.getWritableDatabase(); } return database; } public synchronized void closeDatabase() { if (database != null) { database.close(); database = null; } } } ``` 3. 创建实体 ```java public class MyEntity { private int id; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` 4. 创建DAO ```java public class MyEntityDao { private SQLiteDatabase database; public void open() { database = DatabaseManager.getInstance().openDatabase(); } public void close() { DatabaseManager.getInstance().closeDatabase(); } public void insert(MyEntity entity) { ContentValues values = new ContentValues(); values.put("name", entity.getName()); values.put("age", entity.getAge()); database.insert("mytable", null, values); } public void update(MyEntity entity) { ContentValues values = new ContentValues(); values.put("name", entity.getName()); values.put("age", entity.getAge()); database.update("mytable", values, "id=?", new String[]{String.valueOf(entity.getId())}); } public void delete(int id) { database.delete("mytable", "id=?", new String[]{String.valueOf(id)}); } public MyEntity findById(int id) { Cursor cursor = database.query("mytable", null, "id=?", new String[]{String.valueOf(id)}, null, null, null); if (cursor != null && cursor.moveToFirst()) { MyEntity entity = new MyEntity(); entity.setId(cursor.getInt(cursor.getColumnIndex("id"))); entity.setName(cursor.getString(cursor.getColumnIndex("name"))); entity.setAge(cursor.getInt(cursor.getColumnIndex("age"))); cursor.close(); return entity; } return null; } public List<MyEntity> findAll() { List<MyEntity> entities = new ArrayList<>(); Cursor cursor = database.query("mytable", null, null, null, null, null, null); if (cursor != null && cursor.moveToFirst()) { do { MyEntity entity = new MyEntity(); entity.setId(cursor.getInt(cursor.getColumnIndex("id"))); entity.setName(cursor.getString(cursor.getColumnIndex("name"))); entity.setAge(cursor.getInt(cursor.getColumnIndex("age"))); entities.add(entity); } while (cursor.moveToNext()); cursor.close(); } return entities; } } ``` 5. 在Activity中使用 ```java public class MainActivity extends AppCompatActivity { private MyEntityDao dao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DatabaseManager.initialize(getApplicationContext()); dao = new MyEntityDao(); dao.open(); // 插入数据 MyEntity entity = new MyEntity(); entity.setName("Tom"); entity.setAge(20); dao.insert(entity); // 更新数据 entity.setName("Jerry"); dao.update(entity); // 删除数据 dao.delete(entity.getId()); // 查询数据 MyEntity e = dao.findById(1); List<MyEntity> entities = dao.findAll(); dao.close(); } @Override protected void onDestroy() { super.onDestroy(); DatabaseManager.getInstance().closeDatabase(); } } ``` 这样就完成了基于Android SQLite数据库的封装,使得操作更加简单方便,同时也提高了代码的可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值