1.制作一个工具类的文档

javadoc -d 目录 -author -version   arrayTool.java

实例:

  1. class arrayDemo
  2. {
  3. public static void main(String[] args){
  4.  
  5. int[] arr = {23,34,54,65,57,7};
  6.  
  7. //遍历数组
  8. arrayTool.printArray(arr);
  9. //获取数组中的最大值
  10. int max = arrayTool.getMax(arr);
  11. System.out.println("数组中的最大值为"+max);
  12. //获取数组中元素的索引
  13. int index = arrayTool.getIndex(arr,57);
  14. System.out.println("57在数组中的索引位置为"+index);
  15.  
  16. }
  17.  
  18. }
  1. 生成工具类的文档类型
    javac -d doc -author -version arrayTool.java
    /**
  2. *数组操作工具类
  3. *@author greymouster
  4. *@version v1.0
  5. */
  6. public class arrayTool
  7. {
  8. /**
  9. *私有的构造方法 禁止外部实例化对象
  10. */
  11. private arrayTool(){}
  12.  
  13. /**
  14. *遍历数组方法 遍历后为[元素1,元素2,元素3,....]
  15. *@param arr 要遍历的数组
  16. */
  17. public static void printArray(int[] arr){
  18. System.out.print("[");
  19. for(int x=0;x<arr.length;x++){
  20. if(x == arr.length-1){
  21. System.out.println(arr[x]+"]");
  22. }else{
  23. System.out.print(arr[x]+",");
  24. }
  25. }
  26. }
  27.  
  28. /**
  29. *获取数组中最大值的方法
  30. *@param arr 数组
  31. *@return 返回数组中的最大值
  32. */
  33. public static int getMax(int[] arr){
  34. //加入数组的元素为最大值
  35. int max = arr[0];
  36.  
  37. for(int x=1;x<arr.length;x++){
  38. if(max<arr[x]){
  39. max = arr[x];
  40. }
  41. }
  42.  
  43. return max;
  44. }
  45.  
  46. /**
  47. *获取数组中值的索引
  48. *@param arr 数组 value 数组中的值
  49. *@return index 返回数组中值所在的索引 如果不存在返回-1.
  50. */
  51. public static int getIndex(int[] arr,int value){
  52.  
  53. int index = -1;
  54.  
  55. for(int x=0;x<arr.length;x++){
  56. if(arr[x] == value){
  57. index = x;
  58. }
  59. }
  60.  
  61. return index;
  62. }
  63.  
  64. }

2.java中不支持多继承,支持多层继承

  1. class A extends B,C{} //错误
  2.  
  3. //以下是多层继承关系
  4. class A {
  5.  
  6. public static void method(){
  7. System.out.println("ceshi");
  8. }
  9. }
  10.  
  11. class B extends A{
  12.  
  13. public static void show(){
  14. System.out.print("ceshi1");
  15. }
  16. }
  17.  
  18. class C extends B{
  19. public static void main(Stirng[] args){
  20. B b = new B();
  21. b.show();
  22. b.method();
  23. }
  24. }

子类不能继承父类的构造方法,但是可以通过supper关键字去访问父类构造方法

子类中所有的构造方法默认都会访问父类中无参数的构造方法

因为子类会继承父类中的数据,可能还会使用父类的数据

所以,子类初始化之前,一定要先完成父类数据的初始化

注意:每个构造方法的第一条语句默认都是:super()

super 和this的区别:

  1. /*
  2. 问题是:
  3. 我不仅仅要输出局部范围的num,还要输出本类成员范围的num。怎么办呢?
  4. 我还想要输出父类成员范围的num。怎么办呢?
  5. 如果有一个东西和this相似,但是可以直接访问父类的数据就好了。
  6. 恭喜你,这个关键字是存在的:super。
  7.  
  8. this和super的区别?
  9. 分别是什么呢?
  10. this代表本类对应的引用。
  11. super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)
  12.  
  13. 怎么用呢?
  14. A:调用成员变量
  15. this.成员变量 调用本类的成员变量
  16. super.成员变量 调用父类的成员变量
  17. B:调用构造方法
  18. this(...) 调用本类的构造方法
  19. super(...) 调用父类的构造方法
  20. C:调用成员方法
  21. this.成员方法 调用本类的成员方法
  22. super.成员方法 调用父类的成员方法
  23. */
  24. class Father {
  25. public int num = 10;
  26. }
  27.  
  28. class Son extends Father {
  29. public int num = 20;
  30.  
  31. public void show() {
  32. int num = 30;
  33. System.out.println(num); // 30
  34. System.out.println(this.num); //20
  35. System.out.println(super.num); //10
  36. }
  37. }
  38.  
  39. class ExtendsDemo5 {
  40. public static void main(String[] args) {
  41. Son s = new Son();
  42. s.show();
  43. }
  44. }

通过super()方法去访问父类中的带参构造方法

  1. class Father{
  2.  
  3. public Father(String name){
  4. System.out.println("带参构造方法");
  5. }
  6. }
  7.  
  8. class Son extends Father{
  9. public Son(){
  10. super("随便给");
  11. System.out.println("无参构造方法");
  12. }
  13.  
  14. public Son(String name){
  15. //super("随便给");
  16. this();
  17. System.out.println("有参构造方法");
  18. }
  19. }
  20.  
  21. class ExtendsDemo{
  22.  
  23. public static void main(String[] args){
  24. Son s = new Son();
  25.  
  26. System.out.println("--------------");
  27. Son s2 = new Son("daican");
  28. }
  29. }

方法重写和方法重载

方法重写:子类中出现了和父类中方法声明一模一样的方法

方法重载:本类中出现了方法名一样,参数列表不同的方法,与返回值无关

  1. /*
  2. 猫狗案例讲解
  3.  
  4. 先找到具体的事物,然后发现具体的事物有共性,才提取出一个父类。
  5.  
  6. 猫:
  7. 成员变量:姓名,年龄,颜色
  8. 构造方法:无参,带参
  9. 成员方法:
  10. getXxx()/setXxx()
  11. eat()
  12. palyGame()
  13. 狗:
  14. 成员变量:姓名,年龄,颜色
  15. 构造方法:无参,带参
  16. 成员方法:
  17. getXxx()/setXxx()
  18. eat()
  19. lookDoor()
  20.  
  21. 共性:
  22. 成员变量:姓名,年龄,颜色
  23. 构造方法:无参,带参
  24. 成员方法:
  25. getXxx()/setXxx()
  26. eat()
  27.  
  28. 把共性定义到一个类中,这个类的名字叫:动物。
  29. 动物类:
  30. 成员变量:姓名,年龄,颜色
  31. 构造方法:无参,带参
  32. 成员方法:
  33. getXxx()/setXxx()
  34. eat()
  35.  
  36. 猫:
  37. 构造方法:无参,带参
  38. 成员方法:palyGame()
  39. 狗:
  40. 构造方法:无参,带参
  41. 成员方法:lookDoor()
  42. */
  43. //定义动物类
  44. class Animal {
  45. //姓名
  46. private String name;
  47. //年龄
  48. private int age;
  49. //颜色
  50. private String color;
  51.  
  52. public Animal() {}
  53.  
  54. public Animal(String name,int age,String color) {
  55. this.name = name;
  56. this.age = age;
  57. this.color = color;
  58. }
  59.  
  60. public String getName() {
  61. return name;
  62. }
  63.  
  64. public void setName(String name) {
  65. this.name = name;
  66. }
  67.  
  68. public int getAge() {
  69. return age;
  70. }
  71.  
  72. public void setAge(int age) {
  73. this.age = age;
  74. }
  75.  
  76. public String getColor() {
  77. return color;
  78. }
  79.  
  80. public void setColor(String color) {
  81. this.color = color;
  82. }
  83.  
  84. public void eat() {
  85. System.out.println("不要睡了,该吃饭了");
  86. }
  87. }
  88.  
  89. //定义猫类
  90. class Cat extends Animal {
  91. public Cat() {}
  92.  
  93. public Cat(String name,int age,String color) {
  94. super(name,age,color);
  95. }
  96.  
  97. public void playGame() {
  98. System.out.println("猫玩英雄联盟");
  99. }
  100. }
  101.  
  102. //定义狗类
  103. class Dog extends Animal {
  104. public Dog() {}
  105.  
  106. public Dog(String name,int age,String color) {
  107. super(name,age,color);
  108. }
  109.  
  110. public void lookDoor() {
  111. System.out.println("狗看家");
  112. }
  113. }
  114.  
  115. //测试类
  116. class ExtendsTest5 {
  117. public static void main(String[] args) {
  118. //测试猫
  119. //方式1
  120. Cat c1 = new Cat();
  121. c1.setName("Tom");
  122. c1.setAge(3);
  123. c1.setColor("白色");
  124. System.out.println("猫的名字是:"+c1.getName()+";年龄是:"+c1.getAge()+";颜色是:"+c1.getColor());
  125. c1.eat();
  126. c1.playGame();
  127. System.out.println("---------------");
  128.  
  129. //方式2
  130. Cat c2 = new Cat("杰瑞",5,"土豪金");
  131. System.out.println("猫的名字是:"+c2.getName()+";年龄是:"+c2.getAge()+";颜色是:"+c2.getColor());
  132. c2.eat();
  133. c2.playGame();
  134.  
  135. }
  136. }

java学习(五)java类继承的更多相关文章

  1. [ Java学习基础 ] Java的继承与多态

    看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ---- ...

  2. “全栈2019”Java第五十章:继承与构造方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  3. java学习一目了然——File类文件处理

    java学习一目了然--File类文件处理 File类(java.io.File) 构造函数: File(String path) File(String parent,String child) F ...

  4. Java学习笔记——File类之文件管理和读写操作、下载图片

    Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...

  5. Java学习笔记之---类和对象

    Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...

  6. Java学习:Properties类

    Java学习:Properties类 学习目标 认识properties文件,理解其含义,会正确创建properties文件. 会使用java.util.Properties类来操作propertie ...

  7. Java学习:File类

    Java学习:File类 File类的概述 重点:记住这三个单词 绝对路径和相对路径 File类的构造方法 File类判断功能的方法 File类创建删除功能的方法 File类获取(文件夹)目录和文件夹 ...

  8. Java的对象与类,继承

    Java的对象与类,继承 题目1.Java类的建立与使用 设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主姓名.当前的速率和当前方向盘的转向角度,使用类的非静态成员方法来表示改变汽车的 ...

  9. [ Java学习基础 ] Java构造函数

    构造方法是类中特殊方法,用来初始化类的实例变量,它在创建对象(new运算符)之后自动调用. Java构造方法的特点如下: 构造方法名必须与类名相同. 构造方法没有任何返回值,包括void. 构造方法只 ...

  10. [ Java学习基础 ] Java的抽象类与接口

    一.抽象类 1. 抽象类 Java语言提供了两种类:一种是具体类:另一种是抽象子类. 2. 抽象类概念: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的 ...

随机推荐

  1. sublime中开启表格插入

    1. 导入包 tableedit 2. ctrl+shift +p 输入teecv,然后开启后面连个东西: 3 按tab可以插入表格

  2. sql server 2005 修改动态端口,连接字符串为:需要改成:IP地址+逗号+端口号才行

    1.sql server 2005 安装完毕后,默认是动态段,需要用sql brower 查询端口号:修改给固定端口后,格式为:IP地址+逗号+端口号. 2.sql 2000 的格式为:格式为:IP地 ...

  3. httpd 系统错误 无法启动此程序,因为计算机中丢失VCRUNTIME140.dll

    说来话长的搭了一个discuz论坛,服务器是apache,我本地的是直接从官网下的(值得吐槽的是官网居然拿不提供编译版本么要从第三方网站获取,不知道为何....),对应apache之前是搭bug管理系 ...

  4. jq循环方法

    jq在前台使用很广泛,其中不可避免会用到循环,for循环可以,但有时不方便,下边举两个jq循环: 第一个: $.each(数组或对象,function(index,item){ //循环的逻辑代码 } ...

  5. JNI 里使用STL

    JNI里的c或者c++ 调用stl 的时候,比如引入map头文件: #include <map> 在cygwin使用NDK编译的时候,会提示: fatal error:map: No su ...

  6. [iOS]swift版内购

    //内购Demo,看代码说话吧 class IAPTestViewController: UIViewController ,SKProductsRequestDelegate, SKPaymentT ...

  7. Half Lambert

    [Half Lambert] Half Lambert was a technique created by Valve as a way of getting the lighting to sho ...

  8. Kafka核心概念(转)

    转自:https://blog.csdn.net/liyiming2017/article/details/82805479 1.Kafka集群结构 实际上kafka的结构图是有些区别的,现在我们看下 ...

  9. redis入门资源收集汇总

    redis安装:http://www.redis.io/download redis命令测试平台:http://try.redis.io/ redis桌面管理工具:http://redisdeskto ...

  10. 依赖VUE组件通讯机制实现场景游戏切换