第十次课
目标
回顾第三章
一、类
1、概念:
类: 模板(抽出像的部分)+复杂数据类型(引用数据类型)
2、组成
package 包名; //导入其他类 import xxx.xxx.xx; public final|abstract class 类名 extends 父类 implements 接口列表{ //成员属性 //静态属性 //成员常量 //静态常量 //成员|构造块 //静态块 //构造器 //成员方法(具体方法、抽象方法) //静态方法 //内部类 } |
注意:类中即声明、定义属性、常量、方法、内部类,只能间接使用。
3、分类
1)、具体的类: à可以实例化
a)、最终的类:不能被继承
b)、可以被继承的类
2)、抽象类–>不能实例化,模板(不变+可变)
4、单继承多实现
1)、extends: 继承最多一个类,如果没有写继承Object
2)、implements: 实现多个接口,重写规范的方法
5、可见性
1)、public: 公开公共的,任何地方可见
2)、default: 默认的,包访问权限,同包可见
6、完整路径
1)、package:包名.类名
2)、import: 导入类
7、类与类的关系
1)、依赖 2)、关联 3)、聚合 4)、组合 5)、继承 6)、实现
二、静态块
静态块:加载类的信息,仅加载一次
实例:
三、构造块
构造块:初始化对象信息,每创建一个对象执行一次,实例:
四、属性
1、作用: 存储可变的数据
2、分类
1)、成员属性|变量: 每个对象都拥有一份自己的存储空间、属性
2)、静态属性|变量: 共享静态的存储空间
3、定义格式
修饰符类型属性名 [=赋值];
4、访问成员属性: 必须存在对象才能访问,如果不存在,NullPointerException
有了对象后, dot(.) 访问
前提: 存在访问权限
1)、存数据 : 对象名.属性名 =值
2)、取数据: 其他变量=对象名.属性名
5、访问类属性|静态属性: 不用存在对象即可方法
前提: 存在访问权限
1)、存数据 : 类名.属性名 =值
2)、取数据: 其他变量=类名.属性名
6、默认值
0 'u0000' false null
publicclass Book { //静态属性 privatestaticintnumber=1; //成员属性 //编号 private String no; //书名 private String name; //价格 privatedoubleprice; //作者 private String author; //页数 privateintpage;
{ no ="bjsxt"+number++; } publicstaticvoid main(String[] args) { Book book =new Book(); book.name="book"; System.out.println(book.no+"-->"+book.author); } } |
五、常量(只读)
与变量不同的地方
1、 值一旦确定不可改变
2、 没有默认值,确保值存在
1)、静态常量: 声明同时|静态块中赋值à在类加载时确保值存在
2)、成员常量: 声明同时|块|所有的构造器中赋值à在创建对象时确保值存在
全局常量: public static final
publicclass ConstantTest { //静态常量 privatestaticfinalintMAX =100;
//成员常量 privatefinalintMIN =0;
privatefinalintA; /** * * @param a * @param b 只读常量,方法中不能修改 */ public ConstantTest(inta,finalintb) { A =a; //b =10; //不能改变值 }
publicstaticvoid main(String[] args) { System.out.println(MAX); ConstantTest test =new ConstantTest(1,-1); System.out.println(test.MIN); }
} |
六、构造器
构造器
1、作用: 初始化对象信息的,不是创建对象(new)的
2、特殊方法
1)、方法名:与类同名
2)、没有返回值类型|void
3)、调用时机:new 调用、this([实参])
4)、不能为以下修饰符 : static final abstract
3、空构造: javac编译检查是否存在构造器,如果没有会自动加入,否则,用手动的构造器
每个类都存在构造器,确保空构造存在
4、构造重载: 只看形参 +this([实参])
package com.bjsxt.oop.clz; /** * 构造器... * @author Administrator * */ publicclass ConstructorTest {
public/*final*//*static*//*abstract*/ConstructorTest(){ System.out.println("ConstructorTest.ConstructorTest()"); }
public ConstructorTest(String str){ System.out.println("ConstructorTest.ConstructorTest(String)"); }
public ConstructorTest(String str,intm){ this(); System.out.println("ConstructorTest.ConstructorTest(String,int)"); }
publicstaticvoid main(String[] args) { new ConstructorTest("a",12); } } |
六、构造器
1、作用: 初始化对象信息的,不是创建对象(new)的
2、特殊方法
1)、方法名:与类同名
2)、没有返回值类型|void
3)、调用时机:new 调用、this([实参])
4)、不能为以下修饰符 : static final abstract
3、空构造: javac编译检查是否存在构造器,如果没有会自动加入,否则,用手动的构造器
每个类都存在构造器,确保空构造存在
4、构造重载: 只看形参 +this([实参])
编程习惯:空构造确保存在,其他带参构造器不是参数越多越好,够用即可+后面Setter访问器
七、方法
1、作用: 解决某个问题(业务逻辑),操作数据|消息的传递。
2、分类
1)、成员方法
a)、具体的方法:
修饰符[可见性 final] 返回类型|void 方法名(形参列表){
}
b)、抽象的方法:
修饰符[public|protected|default abstract] 返回类型|void 方法名(形参列表);
抽象方法一定存在于抽象类中。
2)、静态方法
修饰符[public|protected|default|private final static] 返回类型|void 方法名(形参列表);
静态方法只能调用静态信息;成员方法可以调用一切。
Setter与getter访问器:替代属性的存储与获取
八、对象
对象: 一切皆为对象 new
1、创建对象的四种方式
1)、new
2)、克隆、拷贝
3)、反序列化
4)、反射
2、new 构造器
1)、如果使用一次,可以用匿名
new 构造器;
2)、如果使用多次,加入引入
类名引用名|对象名 =new 构造器;
3、引用
1)、java中一切皆为值传递
2)、一个对象可以被多个引用所指向,当其中一个对其发生变化,其他也可见
3)、一个引用在同一个时刻只能指向一个对象
4、拷贝对象
5、this:本类对象,隐式传递与成员方法|构造器中
1)、this.属性|方法
2)、this([实参列表])
3)、this
九、三大特性
1、封装: encapsulation
1)、目的: 高内聚,隐藏细节|数据
2)、途径: 访问权限 public protected default private
a)、public: 任何地方可见
b)、protected: 不同包下的子类(子类中且子类自身)可见
c)、default: 同包可见
d)、private: 本类可见
3)、javabean: 私有属性+setter与getter访问器à封装数据
publicclass NewsItem { //排名 ranking privateintranking; //关键字 keywords private String keywords; //指数 Index privateintindex; //详情 details private String details;
public NewsItem() { } publicint getRanking() { returnranking; }
publicvoid setRanking(intranking) { this.ranking = ranking; }
public String getKeywords() { returnkeywords; }
publicvoid setKeywords(String keywords) { this.keywords = keywords; }
publicint getIndex() { returnindex; }
publicvoid setIndex(intindex) { this.index = index; }
public String getDetails() { returndetails; }
publicvoid setDetails(String details) { this.details = details; } } |
2、继承:inheritance
1)、目的: 延续和扩增父类一切信息
2)、途径: extends单继承
3)、重写: 方法签名相同,返回类型<= 可见性>=
4)、super: 子类中的父类
a)、super.属性|方法
b)、super([实参])
5)、final: 修饰类、方法、属性
6)、抽象类: abstract 不能实例化可能包含抽象方法–>模板
3、多态:polymorphism
1)、目的: 低耦合,以不变应万变(灵活)
2)、途径: 继承、重写、父类的引用指向子类的对象|接口的引用指向实现类的对象
3)、接口: interface implements—>多实现接口
a)、公共的抽象方法
b)、全局常量
十、eclipse 工具
1、目标: 快速开发的利器
2、组织管理: 工作空间
建立工程–>建立包 -->建立类与接口
错误解决: ctrl+1
调试代码
目的: 理解程序的执行流程、排除错误
打开调试界面
1)、打断点–>可执行的代码上面双击行号即可
2)、调试界面
Debug asàJava Application
F5:进入方法内部,观察细节
f6:不进入方法内部,执行方法,看的结果方法
f7:跳出方法
f8: 一个断点结束