构造器
反编译java文件指令: javap fileName
-
缺省的无参构造器:默认 无参 无代码
-
在显示的写出之后,可以填写自定义代码
-
主要作用:进行成员属性的初始化
-
如果自己写一个 有参构造器,那么缺省的无参构造器就不再默认提供了
创建对象的过程
- 在堆中的永久区(方法区)中查找是否存在 要创建对象的类模版;
- 如果没有,使用类加载器加载该模版;
- 如果有,则不用重新加载。保证该模版在永久区中是唯一的
- 根据类模版中定义的属性 在GC区中开辟适当大小的空间
- 把此空间全部写0。目的让所有属性都有初始值。
- 如果属性有显示赋值,则更新该空间中对应的值
- 执行构造器方法
- 返回内存地址
成员属性的默认初始值:
数据类型 | 默认初始值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0 |
float | 0.0F |
double | 0.0D |
boolean | false |
char | '0a0000' |
引用类型 | null |
四种访问权限修饰符
-
修饰类的成员(属性) 定义前,用来限定 对象 对 该类成员的访问权限。
修饰符 类内部 同一个包 子类 任何地方 private Y default(缺省) Y Y protected Y Y Y public Y Y Y Y -
修饰 类 时,只可以用 public 和 default(缺省);
|修饰符|同一个包|子类|任何地方
|:--|:--|:--|:--|:--
|default(缺省)|Y
|public|Y|Y|Y
JavaBean
JavaBean是一种Java语言写成的可重用组件。
所谓javaBean,是指符合如下标准的Java 类:
- 类是公共的
- 有一个无参的公共的构造器
- 有属性,且有对应的get、set方法
用户可以使用JavaBean:
- 将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,
- 并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。
用户可以认为JavaBean提供了一种 随时随地的复制和粘贴 的功能,而不用关心任何改变。
public class TestJavaBean {
//属性一般定义为private
private String name;
private int age;
public TestJavaBean() {
}
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;
}
}
JDK中的 主要的包(package) 介绍
-
java.lang
包含一些Java语言的核心类,如String、Integer、Math、System和Thread,提供常用功能。
-
java.util
包含一些 实用工具类,如定义系统特性、接口的集合框架类、使用与日期日历相关的函数。
-
java.net
包含执行与 网络相关 的操作的类和接口。
-
java.io
包含能提供多种 输入/输出 功能的类。
-
java.text
包含了一些java格式化相关的类
-
java.sql
包含了java进行 JDBC数据库 编程的相关类/接口
-
java.awt
包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
-
java.applet
包含applet运行所需的一些类。
package 包目录结构名称, 包目录通常是4层
package 机构类型.机构名称.项目名称.模块名称;
//atguigu.com 通常用域名作为包名.
package com.atguigu.javase.javabean;
在源文件中一旦使用了package, 作用是
告诉 编译器 此文件中的所有类在生成.class后, 要把这些文件放在 对应的包目录 结构中.
注意点 :
-
如果使用了package, 在编译源文件时, 必须加上选项-d ,
javac -d 目标目录(通常就是.目录) 源文件名 javac空格-d空格.空格.java文件
-
如果一个类使用了package, 那么这个类在被其他包的其他类使用时, 必须使用这个类的全限定名称(full qulified name)
//全限定名是指 包名.子包名.子子包名.子子子子包名.类名; //简单类名 类名 package com.school.learnjava.test.FileName;
-
package语句必须位于源文件中的第一行
纯手动运行带包项目
对象关联 :
一个类的对象想要频繁地使用另外一个对象,如何关联? 在本类中把另外一个类的对象作为属性即可
一旦作为属性, 需要处理全参构造, 添加get/set, 处理say方法
MVC设计模式
- 模型层 model 主要处理数据
数据对象封装 model.bean/domain
数据库操作类 model.dao
数据库 model.db
- 控制层 controller 处理业务逻辑
应用界面相关 controller.activity
存放fragment controller.fragment
显示列表的适配器 controller.adapter
服务相关的 controller.service
抽取的基类 controller.base
- 视图层 view 显示数据
相关工具类 view.utils
自定义view view.ui
这种将程序输入输出、数据处理,以及数据的展示 分离开来的设计模式,好处:
- 使程序结构变的灵活而且清晰,
- 同时也描述了程序各个对象间的通信方式,
- 降低了程序的耦合性。
方法覆盖 override
父类中私有方法不能被继承。
条件:
- 方法签名 必须相同。即 覆盖方法 和 被重写方法的方法名称、参数列表和返回值必须相同。
- 覆盖方法的访问权限应该 大于或等于 被重写方法。
- 同为非 static 。
- 子类方法抛出的异常 不能大于 父类中被重写方法的异常。
网友评论