一、帮助文档//了解
(一)写一个类
(二)加入文档注释
(三)通过javadoc工具生成:javac -d 目录 -author -version ArrayTool.java
二、通过JDK提供的API学习了Math类//掌握
(一)APIとは?
Application Programming Interface。应用程序编程接口(帮助文档)。
(二)如何使用?
以Scanner举例:
1、打开帮助文档;
2、显示→索引→输入框(Scanner);
3、看包(java.lang包下的类不需要导入,其他的全部需要导入):
4、再简单地看看类的解释和说明,再看看该类的版本:
5、看类的结构:
成员变量→字段摘要(Scanner中没有,Math中有)
构造方法→构造方法摘要
成员方法→方法摘要
6、学习构造方法:
A:有构造方法,就创建对象
B:没有构造方法,成员可能都是静态的
7、看成员方法
A:左边
是否静态,如果静态,可以通过类名调用
返回值类型,人家返回什么,你就用什么接受
B:右边
看方法名,方法名称不要写错
参数列表,人家要什么,你就给什么;人家要几个,你就给几个
(三)Math类
class MathDemo{
public static void main(String[]args){
double d = Math.random();
System.out.println(d);
System.out.println("----------------");
for (int x = 0; x < 100; x++){
int num = (int)(Math.random()*100)+1;
System.out.println(num);
}
}
}
(四)猜数字小游戏(数据在1-100之间)
/*
*/
import java.util.Scanner;
class GuessNumber{
public static void main(String[]args){
int number = (int) (Math.random()*100)+1;
while (true){
Scanner sc = new Scanner (System.in);
System.out.println("请输入你要猜的数据");
int guessNumber = sc.nextInt();
if (guessNumber>number){
System.out.println("您猜的数据"+guessNumber+"大了");
}else if (guessNumber<number){
System.out.println("您猜的数据"+guessNumber+"小了");
}else{
System.out.println("恭喜你猜中了");
break;
}
}
}
}
三、代码块//理解
(一)定义:用{}括起来的代码
(二)分类:
1、局部代码块:用于限定变量的生命周期,及早释放,提高内存利用率
2、构造代码块:把多个构造方法中相同的代码可以放这里,每个构造方法执行前,首先执行构造代码块
3、静态代码块:对类的数据进行初始化,仅仅执行一次
(三)顺序问题:静态代码块→构造代码块→构造方法
四、继承//掌握
(一)、把多个类中相同的成员给提取出来定义到一个独立的类中,然后让这多个类和独立的类产生一个关系,这多个类就备了这些内容
(二)格式:class 子类名 extends 父类名 { }
class Son extends Father{ }
(三)好处:
1、提高了代码的复用性
2、提供了代码的维护性
3、让类与类产生了一个关系,是多态的前提
(四)弊端
1、让类的耦合性增强,这样某个类的改变,就会影响其他和类相关的类
原则:低耦合,高内聚
耦合:类与类的关系
内聚:自己完成某件事情的能力
2、打破了封装性
(五)继承的特点:
1、Java中类只支持单继承
2、Java中可以多层(重)继承(集成体系)
(六)继承的注意事项:
1、子类不能继承父类的私有成员
2、子类不能继承父类的构造方法,但是可以通过super去访问
3、不要为了部分功能而去继承
(七)什么时候使用继承呢?
1、继承体现的是:is a的关系
2、采用假设法
(八)Java继承中的成员关系:
1、成员变量
(1)子类的成员变量名称和父类的成员变量名字不一样
(2)子类的成员变量名称和父类的成员变量名字一样:
子类的方法访问变量的查找顺序:①在子类方法的局部范围找,有就是用;②在子类的成员范围找,有就使用;③在父类的成员范围找,有就使用;④找不到,报错。
2、构造方法:
(1)子类的构造方法默认会去访问父类的无参构造方法,是为了子类范文父类数据的初始化
(2)父类中如果没有无参构造方法:
①子类通过super去明确调用带参构造;②子类通过this调用本身的其他构造,但一定会有一个去访问了父类构造;③父类提供无参构造。
3、构造方法:
(1)子类的成员方法和父类中的成员方法名称不一样
(2)子类的成员方法和父类中的成员方法名称一样:
通过自理对象访问一个方法的查找顺序:①在子类中找,有就使用;②在父类中找,有就使用;③找不到,报错。
(九)面试题:
1、Override(方法重写)和Overload(方法重载)的区别?
2、this和super的区别和各自的作用?