JAVA自学笔记08

1、构造方法私有,外界就不能再创建对象
2、说明书的制作过程
1)写一个工具类,在同一文件夹下,测试类需要用到工具类,系统将自动编译工具类;工具类的成员方法一般是静态的,因此在测试类中可直接通过
工具类名.方法名(参数列表);
的方法来调用
2)加入文档注释
@ 文字(作者、版本)
@ param / return
3)用工具解析文档注释:javadoc
格式:javadoc -d 目录名-author-version 工具类名.java
可创建未存在的目录
3、工具类配合说明书使用
1)找到并打开文档
2)点击显示,找出索引,找出搜索框
3)观察该类的构造,需不需要导包(java.lang包下的类不需要导入)等等
4)观察类说明,构造方法及成员方法和版本
成员变量 字段摘要
构造方法 构造方法摘要
成员方法(静态?返回值类型?) 方法摘要
有构造方法就创建对象;没有构造方法可能就是静态的
5)使用

@例题1:观察JAVA1.7API文档,学习math类
@例题2:借助Math工具类,编写猜数字程序

import java.util.Scanner;
public class Guess {public static void main(String[] args) {// TODO 自动生成的方法存根int num = (int)( 100*Math.random()+1);System.out.println(num);int i=5;Scanner sc = new Scanner(System.in);System.out.print("猜数字,范围在0~100间");String s2 = "大了";String s3 = "小了";String s4 = "猜对了,游戏结束";String s5 = "请输入数字";int x=sc.nextInt();for(;x!=num&&i>0;i--) {if(x>num) {System.out.println(s2);System.out.println(s5);}if(x<num) {System.out.println(s3);System.out.println(s5);}x=sc.nextInt();}if(x==num) {System.out.println(s4);}else {System.out.println("五次机会用完,游戏结束");}}
}

3、代码块
1)用{}括起来的代码
2)可分为局部代码块、静态代码块、同步代码块、构造代码块
3)局部代码块:在方法中出现,用于 限定变量生命周期,及早释放,提高内存利用率
4)构造代码块:在类中方法外(类中的成员位置)出现,多个构造方法中 方法中相同的代码存放到一起,每次调用构造方法时都执行(但在main方法之后),并且在构造方法前执行,可以把多个构造方法的共同代码放到一起,用于对对象进行初始化
5)静态代码块:在类中方法外(类中的成员位置)出现,并加上static修饰,即static{…};一般用于给类进行初始化,在加载时就进行,并且只进行一次
执行顺序5、4、构造方法,与实际顺序无关

4、继承
1)定义:多个类(子类、派生类)中存在相同属性和行为时,将这些内容抽取到单独一个类中,只需继承那个类(被称为父类、基类或超类)即可
2)通过extends关键字可以实现类与类的继承
class 子类名 extends 父类名{};
3) 提高代码的复用性、提高代码的维护性、使类与类间产生了关系,是多态的前提
4)弊端:类的耦合性增强,我们需要低耦合高内聚
5)特点:①JAVA中只支持单继承,不支持多继承,但它支持多层继承
6)注意事项:
①子类只能继承父类所有的非私有的成员(方法及变量)
②不要为了部分功能去继承一个类
③子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法
7)使用继承的时机
8)成员变量的关系:
①在子类方法中访问一个变量的查找顺序:首先在子类的局部范围内查找,有就使用;接着在子类的成员范围找,有就使用;最后,在父类的成员(变量)内寻找(仅考虑单继承的情况,其余同理类推)
②this和super的区别
%访问成员变量:
this/super.成员变量
调用本类的成员变量/调用父类的成员变量
%调用构造方法:
this(…) 调用本类的构造方法
super(…) 调用父类的构造方法
%调用成员方法:
this.成员方法名 调用本类的成员方法
super.成员方法名 调用父类的成员方法
③继承中构造方法的关系:子类中所有的构造方法默认都会访问父类的无参构造方法
原因:因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前一定要先完成父类数据的初始化
子类的每一个构造方法的第一条语句默认为super();
④继承中构造方法的注意事项:
如果父类中没有无参构造(即已给有参构造方法)方法,系统调用子类的构造方法将报错
解决方法:解决方法:在子类构造方法最前面加
super(参数列表);
来调用父类其他的带参构造方法即可
或者用子类通过this调用本类的其他构造方法来间接调用父类的带参构造方法
super(…)和this(…)必须放在第一句否则就会出现父类数据多次初始化的情况
⑤一个类的初始化的过程:默认初始化、显示初始化、构造方法初始化

@例题3:看程序写结果

class Father{static{System.out.println("静态代码块Father");
}
{System.out.println("构造代码块Father");
}
public Father(){
System.out.println("构造方法Father");
}
}
class Son extends Father{static{System.out.println("静态代码块Son");
}
{System.out.println("构造代码块Son");
}
public Father(){
System.out.println("构造方法Son");
}
}
class Demo{Son s = new Son();
}

执行结果为:
静态代码块Father
静态代码块Son//加载类时执行
构造代码块Father
构造方法Father
构造代码块Son
构造方法Son

转载于:https://www.cnblogs.com/Tanqurey/p/10485326.html

JAVA自学笔记08相关推荐

  1. JAVA自学笔记07

    JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...

  2. JAVA自学笔记24

    JAVA自学笔记24 1.能使用同步代码块就使用同步代码块,除非锁对象是this,就可以考虑使用同步方法.静态方法的锁是类的字节码对象. 2.JDK5新特性 1)接口Lock void Lock()/ ...

  3. JAVA自学笔记22

    JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...

  4. JAVA自学笔记21

    JAVA自学笔记21 1.转换流 由于字节流操作中文不是非常方便,因此java提供了转换流 字符流=字节流+编码表 1)编码表 由字符及其对应的数值组成的一张表 图解: 2)String类的编码和解码 ...

  5. JAVA自学笔记25

    JAVA自学笔记25 1.GUI 1)图形用户接口,以图形的方式,来显示计算机操作的界面,更方便更直观 2)CLI 命令行用户接口,就是常见的Dos,操作不直观 3) 类Dimension 类内封装单 ...

  6. JAVA自学笔记23

    JAVA自学笔记23 1.多线程 1)引入: 2)进程 是正在运行的程序.是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和系统资源. 多进程: 单进程的计算机只能做一件事情,而现在 ...

  7. Java自学笔记——Java面向对象——04.抽象类、接口、内部类

    Java 面向对象各节 Java自学笔记--Java面向对象--01.回顾方法 Java自学笔记--Java面向对象--02.构造器.类和对象 Java自学笔记--Java面向对象--03.封装.继承 ...

  8. 廖雪峰Java自学笔记------Java简洁

    廖雪峰Java自学笔记------Java简洁 这是专门针对小白的零基础Java教程. 为什么要学Java? 因为Java是全球排名第一的编程语言,Java工程师也是市场需求最大的软件工程师,选择Ja ...

  9. Java自学笔记总结04

    Java自学笔记04 一.Lambda表达式 1.1 函数式编程思想概述 1.2 体验Lambda表达式 1.3 Lambda表达式的标准格式 1.4 Lambda表达式的使用 1.5 Lambda表 ...

最新文章

  1. 线性代数:05 实对称矩阵与二次型
  2. .NET Core 6.0之读取配置文件
  3. iOS UITouch触摸与UIGesture手势.01.事件、触摸(touch)事件
  4. GRE OVER IPSEC
  5. VTK:创建字母频率的条形图用法实战
  6. gstreamer应用
  7. [Shder]物体溶解效果
  8. IDEA下的第一个springBoot
  9. Google Earth 使用的经纬度格式及转换
  10. 使用Xbox360手柄控制你的turtlebot/rbx1/mrobot小车机器人
  11. 【笔记】研究生的早期科研之路(作者:中国人民大学 赵鑫)
  12. 官方scratch3.0正式发布,全面支持移动设备在线编程!
  13. OSPF学习小结与实验
  14. python3中zip函数_用python实现矩阵转置,python3 中zip()函数
  15. excel 文件工作表保护密码破解
  16. ubuntu下手动安装gnome插件
  17. .NET/C# — EXCEL文件内容添加到数据库中
  18. 网络天才网页中文版_网络天才网页版(在线玩)
  19. Android逆向工程:解决针对小米系统应用,使用Apktool反编译失败问题!
  20. PPTP - GRE

热门文章

  1. dhcp服务器能为客户端提供哪些信息,为DHCP客户端提供DHCP服务器的MAC [关闭]
  2. musictools怎么用不了_夏天少不了一只草编包,怎么搭配才不像“买菜用”?
  3. 【HDU - 2665】Kth number(区间第K大,主席树,模板)
  4. 【洛谷 - P2756】飞行员配对方案问题(网络流最大流,输出方案)
  5. 【HDU - 1542】Atlantis (线段树,扫描线)
  6. java求小数高精度_浅谈Java中的高精度整数和高精度小数
  7. 计算机专业英语霍洪涛出版社,计算机专业英语(霍洪涛)课件Chapter 4.ppt
  8. 腾讯 tars java_腾讯TARS开源团队郑苏波:腾讯微服务开发框架的源码剖析
  9. 软件测试ipad电池,ipad2020电池有问题是真的吗
  10. jdk11 后用的指定编码格式,读取文件