day08总结
1.如何制作帮助文档
(1)写一个类
(2)加入文档注释
(3)通过javadoc工具生成即可
格式:javadoc -d 目录 -author -version 文件名.java
2.通过JDK提供的API学习了Math类
(1)API:Application Programming Interface 即应用程序编程接口
(2)如何使用呢?
A:在显示--索引中查找要搜索的类名
B:首先看包,只有java.lang包下的类不需要导包
C:看简单的类的解释和说明
D:看版本,其中说明了该类是从哪个JDK版本开始才能使用的
E:看类的结构:
成员变量------->字段摘要
构造方法------->构造方法摘要
成员方法------->方法摘要
F:学习构造方法
有构造方法摘要:就创建对象
无构造方法摘要:成员可能都是静态的
G:看成员方法
左边: 是否静态:如果是静态就可以通过类名调用
返回值类型:返回什么就用什么类型接收
右边:看方法名:名字别写错
参数列表:数量,类型
(3)Math类
A:是针对数学进行操作运算的类
B:没有构造方法,因为成员都是静态的
C:产生随机数
public static double random():[ 0.0,1.0)
3.代码块
(1)用{}括起来的代码
(2)分类
A:局部代码块
位于方法内的代码块,用于限定变量的生命周期,及早释放,提高内存利用率
B:构造代码块
把多个构造方法中相同的代码可以放到这里
位于类中成员变量位置,每调用一次构造方法就会执行一次
C:静态代码块
位于类中成员变量位置,并用static修饰
只在类加载的时候执行一次,之后不再执行
可用于对类的初始化
D:同步代码块(多线程再讲)
(3)顺序:
静态代码块 > 构造代码块 > 构造方法
4.继承
(1)把多个类中相同的成员提取出来定义到一个独立的类中,然后让这多个类和该独立的类产生一个关系,这多个
类就具备了这些内容。这个关系就是继承。
(2)java中如何表示继承呢?
格式: class 子类名 extends 父类名 {.....}
(3)继承的好处
A:提高了代码的复用性
B:提高了代码的维护性
C:让类与类产生了关系,是多态的前提
(4)继承的弊端
A:让类的耦合性增强,这样某个类的改变就会影响其他和该类相关的类
开发原则:低耦合,高内聚
耦合:类与类的关系
内聚:自己完成某件事情的能力
B:打破了封装性
(5)Java中继承的特性
A:Java中类只支持单继承
B:Java中可以多层(多重)继承,形成继承体系
(6)继承的注意事项
A:子类不能继承父类的私有成员
B:子类不能继承父类的构造方法,但是可以通过super去访问
C:不要为了部分功能而去继承
(7)Java继承中的成员关系
A:成员变量
子类中的成员名称和父类中的成员变量名称不一样:这个简单,该用谁用谁
子类中的成员名称和父类中的成员变量名称一样:就近原则
子类的方法访问变量的查找顺序:
a:先在子类的局部范围找,找到就用
b:在子类的成员范围里找,找到就用
c:在父类的成员范围里找,找到就用
d:再找不到,直接报错
B:构造方法
a:子类的构造方法会默认先访问父类的无参构造方法
这是为了子类访问父类数据之前先进行父类数据的初始化
b:父类中如果没有无参构造方法,怎么办
子类通过super去显示的调用父类带参构造方法
子类通过this调用本身的其他构造,但一定要有一个去访问父类的带参构造方法
C:成员方法
子类中的成员方法和父类中的成员方法名称不一样:这个简单,该用谁用谁
子类中的成员方法和父类中的成员方法名称一样:使用子类自己的成员方法
通过子类的对象访问子类的一个方法的查找顺序:
a:先在子类里找,找到就用
b:在父类里找,找到就用
c:再找不到,直接报错
5.自己制作的数组工具类
6.自己写的一些案例代码
/*
根据案例代码的输出结果
查看代码块的先后顺序
结果是:
我是CodeTest类中的静态代码块
我是main方法
我是Code类中的静态代码块
我是Code类中的构造代码块
构造方法
我是Code类中的构造代码块
构造方法
主要是记住第二个到底是谁先执行,容易出错。
*/
class Code{
static{
System.out.println("我是Code类中的静态代码块");
}
{
System.out.println("我是Code类中的构造代码块");
}
public Code(){
System.out.println("构造方法");
}
}
class CodeTest{
static {
System.out.println("我是CodeTest类中的静态代码块");
}
public static void main(String[] args){
System.out.println("我是main方法");
Code c1 = new Code();
Code c2 = new Code();
}
}
/*
学生类和老师类
*/
class Person{
//姓名
private String name;
//年龄
private int age;
//无参构造方法
public Person(){}
public Person(String name,int age){
this.name = name;
this.age = age;
}
//setXxx()和getXxx()方法
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
class Student extends Person{
public Student(){}
public Student(String name,int age){
//this.name = name;错误的
//this.age = age;错误的
super(name,age);
}
}
class Teacher extends Person{
public Teacher(){}
public Teacher(String name,int age){
//this.name = name;错误的
//this.age = age;错误的
super(name,age);
}
}
class ExtendsTest{
public static void main(String [] args){
Student s1 = new Student();
s1.setName("李雷");
s1.setAge(21);
System.out.println(s1.getName()+"---"+s1.getAge());
Student s2 = new Student("韩梅梅",18);
System.out.println(s2.getName()+"---"+s2.getAge());
Teacher t1 = new Teacher();
t1.setName("张三");
t1.setAge(45);
System.out.println(t1.getName()+"---"+t1.getAge());
Teacher t2 = new Teacher("张三",45);
System.out.println(t2.getName()+"---"+t2.getAge());
}
}