封装、继承

debug

在学习或开发过程中,遇到bug是避免不了的,为了能够快速调试,可以使用debug调试工具。
调试一个Java程序非常简单的,主要有设置断点、启动调试、单步执行、结束调试几步。

debug界面窗口

如下是在IDEA中启动Debug模式,进入断点后的界面(这里是Windows)。简单说明以下图中标注的7个
地方

  1. 断点:在左边行号栏单击左键,断点行的颜色可自己去设置。
  2. Debug窗口:访问请求到达第一个断点后,会自动激活Debug窗口。如果没有自动激活,可以去设置里设置。
  3. Debugger->debug调试窗口,Console->控制台
  4. 调试按钮:调试的主要功能就对应着这几个按钮,鼠标悬停在按钮上可以查看对应的快捷键。
  5. 方法调用栈:这里显示了该线程调试所经过的所有方法
  6. Variables:在变量区可以查看当前断点之前的当前方法内的变量。
  7. 服务按钮:可以在这里关闭/启动服务,设置断点等。
调试按钮说明
Show Execution Point (Alt + F10):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。
Step Over (F8):步过,一行一行地往下走,如果这一行上有方法不会进入方法。
Step Into (F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。
Force Step Into (Alt + Shift + F7):强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
Step Out (Shift + F8):步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
Drop Frame (默认无):回退断点
Run to Cursor (Alt + F9):运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。

package与import

package

package存在的意义是防止命名冲突造成使用不便。
package类似一个文件夹,文件夹内有各种文件。package与package的附属关系用“.”连接,类似父文件
夹中的子文件夹。比如说 java.lang.String就是java文件夹中的lang文件夹中的String文件。
java.io.InputStream则是java文件夹中的io文件夹中的InputStream文件。
同一个文件夹内无法存在同名的文件,而不同名的文件夹里允许存在同名文件,因此不同文件夹(即不
同package中允许出现相同class名)。
为了便于管理大型软件系统中数目众多的类,解决类的命名冲突问题,Java 引入包(package)机制,提
供类的多重类命名空间。

一般的命名为:公司域名倒写+功能名|模块名。
package 语句作为 Java 源文件的第一条语句,指明该文件中定义的类所在的包。(若缺省该语句,则指
定为无名包)。

注意:
不要定义与 jdk 相同的包,相同的类,否则会引起很多你觉得莫名其妙的问题
写项目时都要加包,不要使用默认包。
com.oop和com.oop.test,这两个包没有包含关系,是两个完全独立的包。只是逻辑上看起来后者
是前者的一部分。

import

如果一个类存在包名,则在其他包下使用该类时,必须使用全额限定名(简称全名或完整类名,
com.java01.MyClass),编译器才能找到该类;也可以使用 import 在文件的开头引入要使用到的类。
不需要使用 import 的类有:
1 语言包 (java.lang)下的类 (String,System…)
2 同包下的类

静态导入:
import 语句不仅可以导入类,还增加了导入静态方法的功能

//导入静态属性
import static java.lang.Math.PI;
import static java.lang.System.out;
//导入静态方法
import static java.lang.Math.sin;
public class ImportDemo {
	public static void main(String[] args) {
		out.println(PI);
		sin(1.1);
	}
}

JDK 中常用的包简单介绍:
java.lang –语言包:语言中常用的功能,如:String、Math、System、Integer、Thread…
java.util – 工具包:提供一些实用的工具类,如:容器(List、Set、Map…),日期类
java.io – 输入输出包:提供操作读取文件的相关类,如:File、InputStream、OutputStream…
java.net – 网络包: 操 作 远 程 资 源 的 类 , 如:InetSocketAddress、 DatagramPacket、ServerSocket…
java.sql – 数据库包:操作JDBC的类,Connection、Statement、ResultSet….

面向对象-封装(encapsulation)

我们程序设计要追求“ 高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干
涉;低耦合:仅暴露少量的方法给外部使用。利用抽象数据类型将数据和基于数据的操作封装在一起,
使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只
保留一些对外接口使之与外部发生联系。系统的其他部分只有通过包裹在数据外面的被授权的操作来与
这个抽象数据类型交流与交互。也就是说,用户无需知道对象内部方法的实现细节,但可以根据对象提
供的外部接口(对象名和参数)访问该对象。

作用
  1. 实现了专业的分工。将能实现某一特定功能的代码封装成一个独立的实体后,各程序员可以在需要
    的时候调用,从而实现了专业的分工,即工作中的分模块、分功能开发。
  2. 隐藏信息,实现细节。通过控制访问权限可以将可以将不想让客户端程序员看到的信息隐藏起来,
    如某客户的银行的密码需要保密,只能对该客户开发权限。

JavaBean

在编写 javabean 中的有一些常用的规则如:
. 属性尽可能私有化 private
. 访问器: setter 与 getter 访问器 >private ,一般 public 居多 setterXxx: 存储 与 getterXxx: 查看

面向对象-继承(inheritance)

概念
继承的本质 : 是对某一批类的抽象,从而实现对现实世界更好的建模。
继承的作用 : 使用继承可以提高代码的复用性。
如何使用继承 : 使用extends 关键字即可。extends 关键字的意思是“扩展”。子类是父类的延续+扩展。
语法<modifier> class <name> [extends <superclass>]{}

注意:
子类继承父类的成员变量和成员方法,但不继承父类的构造方法
java中只有单继承 ,没有像c++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护。就像我们现实中,如果你有多个父母亲,那是一个多么混乱的世界啊。多继承,就是为了实现代码的复用性,却引入了复杂性,使得系统类之间的关系混乱。
java中的多继承,可以通过接口来实现
如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object。

继承的特点
优点:
通过继承可以简化类的定义,实现代码的重用|提高代码复用性
可以更好的扩展程序
子类一旦继承父类,可以有权使用父类中的成员,也可以扩展定义子类独有内容
java是单继承继承,实现简单

缺点:
子类与父类之间紧密耦合(耦合度高),子类依赖于父类的实现,子类缺乏独立性。
不便于后期维护
单继承一个子类只能有一个父类,不够灵活,不便于后期维护

权限修饰符

public: 一览无遗;
protected:子承父业 (儿子自己使用);
default :家庭和睦;
private :占为已有

关键字同一个类同一个包中不同包下子类所以类
private
default
protected
public
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值