继承 封装 多态

重新搞一波 复习巩固

简单记录 慕课网 imooc Java 零基础入门-Java面向对象-Java封装

封装

封装是什么?

  • 将类的某些信息隐藏在类内部,不允许外部程序直接访问

  • 通过该类提供的方法来实现对隐藏信息的操作和访问

隐藏对象的信息

留出访问的接口

隐藏对象的信息 留出访问的接口

例:

ATM机 存取款 转账 余额查询 …

钞票 重要信息 ATM的 不能看到 不能拿走

操作接口 插卡口 取钞口 操作屏 简单操作 获取钞票

银行卡 密码 简单操作 拿到钞票 ATM设计原理

钞票安全性 对外接口 用户的 便捷操作

ATM的封装

特点:

1、只能通过规定方法访问数据

2、隐藏类的实例细节,方便修改和实现

封装

修改属性的可见性 设为private

创建getter/setter方法 设为public 用于属性的读写

在getter/setter方法中加入属性控制语句 对属性值的合法进行判断

作用:

1、管理Java文件

2、解决同名文件冲突

定义包

语法:

package包名;

例:package com.imooc.animal;

注意:

1、必须放在Java源文件中的第一行

2、一个Java源文件中只能有一个package语句

3、包名全部英文小写

4、命名方式:域名倒序+模块+功能

管理Java文件

解决同名文件冲突

导入包

语法:

import 包名.类名;

例:

导入包中全部类:

import com.imooc.*;

导入包中指定类:

import com.imooc.animal.Cat;

常用系统包

java.lang 包含java 语言基础的类

java.util 包含java语言中各种工具类

java.io 包含输入、输出相关功能的类

static

1、static + 属性 — 静态属性

2、static + 方法 — 静态方法

3、static + 类 — 不存在

4、static + 方法内局部变量 —不存在

静态成员随类加载产生,直至类销毁才回收

静态方法

1、可以直接调用同类中的静态成员

2、不可以直接调用同类中的非静态成员

3、可以通过实例化对象后,对象调用的方式完成非静态成员调用

实例化 可调用非静态的

直接使用 类 .静态方法

代码块

1、通过{ }可以形成代码块

2、方法内的代码块称为:普通代码块

3、类内的代码块称为:构造代码块

4、构造代码块前 + static : 静态代码块

代码块 执行顺序

1、无论实例产生多少对象,静态代码块只执行一次

2、构造代码块随实例化过程调用

3、普通代码块随方法调用执行

Cat.java

package com.imooc.animal;

/**
* 宠物猫类
*
* @author imooc
*
*/
//static+类--》不存在
public class Cat {
// 成员属性:昵称、年龄、体重、品种
// 修改属性的可见性---private 限定只能在当前类内访问
private String name;// 昵称 String类型默认值null
private int month;// 年龄 int类型默认值0
private double weight;// 体重 double类型默认值0.0
private String species;// 品种 //static: 静态 静态成员、类成员
//static+属性--》静态属性、类属性
public static int price;//售价 static{
System.out.println("我是静态代码块1");
}//静态代码块 //构造方法
public Cat() {
//static+方法内的局部变量--》不存在
// static int temp=14;
System.out.println("我是宠物猫~~");
} public Cat(int month) {
// this.month=month;
this.setMonth(month);
} // {
// name="妞妞";
// price=130;
// System.out.println("我是构造代码块1");
// }//构造代码块
// static{
price=290;
Cat temp=new Cat();
temp.name="小胖";
System.out.println("我是静态代码块2");
}//静态代码块 // 创建get/set方法
// 在get/set方法中添加对属性的限定
public void setName(String name) {
this.name = name;
} public String getName() {
return "我是一只名叫:" + this.name + "的宠物猫";
} public int getMonth() {
return month;
} public void setMonth(int month) {
if (month <= 0)
System.out.println("输入信息错误,宠物猫的年龄必须大于0");
else
this.month = month;
} public double getWeight() {
return weight;
} public void setWeight(double weight) {
this.weight = weight;
} public String getSpecies() {
return species;
} public void setSpecies(String species) {
this.species = species;
} // 成员方法:跑动、吃东西
// 跑动的方法
//在成员方法中,可以直接访问类中静态成员
public void run() {
eat();
this.name="妞妞";
this.price=20;
System.out.println("售价是"+Cat.price+"的"+this.name+"快跑");
} public void run(String name) { int temp=14;
{
// int temp=12;
System.out.println("我是普通代码块1,temp="+temp);
}//普通代码块 System.out.println(name + "快跑,temp="+temp); {
// int temp=13;
System.out.println("我是普通代码块2,temp="+temp);
}//普通代码块
} // 吃东西的方法
//static+方法--》类方法、静态方法
public static void eat() {
//静态方法中不能直接访问同一个类中的非静态成员,只能直接调用同一个类中的静态成员
//只能通过对象实例化后,对象.成员方法的方式访问非静态成员
Cat temp=new Cat();
temp.run();
temp.name="小胖";//静态方法中不能使用this
// temp.name="小胖";
price=1500;
System.out.println("小猫吃鱼");
}
}

CatTest.java

package com.imooc.animal;

//单一职责原则
public class CatTest {
public static void main(String[] args) {
// 对象实例化
Cat one = new Cat(3);
// 测试
// one.setName("凡凡");
// one.setMonth(0); //=-3;
// one.weight = 1200;
// one.species = "中华田园猫"; // System.out.println("昵称:" + one.getName());
if (one.getMonth() == 0)
return;
System.out.println("年龄:" + one.getMonth());
// System.out.println("体重:" + one.weight);
// System.out.println("品种:" + one.species); }
}

总结

封装是什么?

  • 将类的某些信息隐藏在类内部,不允许外部程序直接访问

  • 通过该类提供的方法来实现对隐藏信息的操作和访问

隐藏对象的信息

留出访问的接口

最新文章

  1. HTML 学习笔记 JavaScript(创建对象)
  2. TP框架 ---空控制器和空操作
  3. 自绘制HT For Web ComboBox下拉框组件
  4. net-snmp的dateandtime数据类型
  5. codefroces 589A
  6. Android课程---优化ListView列表视图
  7. The Name/Origin of Country names
  8. [Xcode使用 - 2] 设置APP图标和启动画面
  9. 树莓派(Rospberry Pi B+)到货亲測
  10. DevExpres表格控件运行时动态设置表格列
  11. Jack Straws(判断线段是否相交 + 并查集)
  12. win7+vs2008+opencv
  13. HTML&amp;lt;!DOCTYPE&amp;gt; 宣示
  14. JAVA 统计字符串中中文,英文,数字,空格的个数
  15. 【LCT维护基环内向树森林】BZOJ4764 弹飞大爷
  16. java1.8十大新特性详解
  17. Spring Boot 2.x 编写 RESTful API (三) 程序层次 &amp; 数据传输
  18. python3-基础2
  19. golang基于etcd实现分布式锁(转)
  20. 使用canvas实现一个圆球的触壁反弹

热门文章

  1. ftp之filezilla使用记录
  2. c++笔试题3
  3. 6个JS特效教程,学完即精通
  4. JDK11 下载安装与配置环境变量
  5. 【面试专栏】Java并发编程:volatile关键字
  6. SQL注入-DNS注入(一)
  7. Abp vNext异常处理的缺陷/改造方案
  8. 探究 position-sticky 失效问题
  9. Mysql5.7.20安装手记
  10. EF Core 三 、 骚操作 (导航属性,内存查询...)