zoukankan      html  css  js  c++  java
  • JAVA自学笔记08

    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

  • 相关阅读:
    弹窗
    ajax
    Jquery元素选取、常用方法
    PDO
    session的使用
    投票练习题
    php 批量删除
    php 连接数据库的增删改查
    面向对象的加载类和设计模式
    面向对象三大特性
  • 原文地址:https://www.cnblogs.com/Tanqurey/p/10485326.html
Copyright © 2011-2022 走看看