• Java编程基础篇第六章


    构造方法

    一:概念

      给对象的数据(属性)进行初始化

    二:特点

      a.方法名与类同名(字母大小写也要一样)

      b.没有返回值类型

      c.没有具体的返回值 return

    三:构造方法重载

      方法名相同,与返回值类型无关(因为构造方法没有返回值),只看参数列表

      注:如果没有写出构造方法,系统自动提供一个无参的构造方法,如果我们给出了构造方法,

      系统不再提供构造方法。

    1 class Student{ 
    2 //下面是构造方法 
    3 public Student{ 
    4 //无参构造方法 
    5 } 
    6 public Person(String name,int age){
    7  //有参构造方法 
    8 }
    9  }

    成员变量

    一:赋值

      A.通过setxxx()方法

      B.通过构造方法

    例子:学生类

    class Student{
     private String name; private int age;
     //下面是构造方法 
    public Student(String name,int age){
     //构造方法赋值
     //this.name = name;
     //this.age = age;
     } 
    public void setName(String name){ 
    this.name = name;
     } 
    public void setAge(int age){
     this.age = age;
     } 
    }

    创建对象的步骤

      Student s = new Student();

      1,Student.class加载进内存

      2,声明一个Student类型引用s

      3,在堆内存创建对象,

      4,给对象中属性默认初始化值

      5,属性进行显示初始化

      6,构造方法进栈,对对象中的属性赋值,构造方法弹栈

      7,将对象的地址值赋值给s

    static关键字

    一:概念:

      static用于修饰类的成员,如成员变量,成员方法,代码块,被static

    修饰的成员具备一些特殊性。

    二:特殊性

      a:随着类的加载而加载

      b:优先于对象存在

      c:被类的所有对象共享

      举例:咱们班级的学生应该共用同一个班级编号。其实这个特点也

      是在告诉我们什么时候使用静态?

      如果某个成员变量是被所有对象共享的,那么它就应该定义为静态

      的。

      举例:

        饮水机(用静态修饰)

        水杯(不能用静态修饰)

      共性用静态,特性用非静态

      d:可以通过类名调用

        其实它本身也可以通过对象名调用。

      推荐使用类名调用。

      静态修饰的内容一般我们称其为:与类相关的,类成员

    三:注意事项

      a:在静态方法中是没有this关键字的

      如何理解呢?

        静态是随着类的加载而加载,this是随着对象的创建而存在。

        静态比对象先存在。

      b:静态方法只能访问静态的成员变量和静态的成员方法

      静态方法:

        成员变量:只能访问静态变量

        成员方法:只能访问静态成员方法

      非静态方法:

        成员变量:可以是静态的,也可以是非静态的

        成员方法:可是是静态的成员方法,也可以是非静态的成员方法。

      简单记:

        静态只能访问静态。

    四:列子

    class Student{ 
    static String name;
    //静态变量
     static{ 
    System.out.println("这是静态代码块"); 
    }
     public static void sayHello()
    { 
    System.out.println("这是静态方法"); 
    } 
    }

    五:静态变量和成员变量的区别

      A:所属不同

        * 静态变量属于类,所以也称为为类变量

        * 成员变量属于对象,所以也称为实例变量(对象变量)

      B:内存中位置不同

        * 静态变量存储于方法区的静态区

        * 成员变量存储于堆内存

      C:内存出现时间不同

        * 静态变量随着类的加载而加载,随着类的消失而消失

        * 成员变量随着对象的创建而存在,随着对象的消失而消失

      D:调用不同

        * 静态变量可以通过类名调用,也可以通过对象调用

        * 成员变量只能通过对 象名调用

    main方法的格式详细解释

      A:格式

        * public static void main(String[] args) {}

      B:针对格式的解释

        * public 被jvm调用,访问权限足够大。

        * static 被jvm调用,不用创建对象,直接类名访问

        * void被jvm调用,不需要给jvm返回值

        * main 一个通用的名称,虽然不是关键字,但是被jvm识别

        * String[] args 以前用于接收键盘录入的

    使用JDK提供的帮助文档

      A:找到文档,打开文档

      B:点击显示,找到索引,出现输入框

      C:你应该知道你找谁?举例:Scanner

      D:看这个类的结构(需不需要导包)

        * 成员变量 字段

        * 构造方法 构造方法

        * 成员方法 方法

    Math类

    一:概念

      类包含用于执行基本数学运算的方法

    二:获取随机数的方法

      public static double random():返回带正号的 double 值,该值大于等于 0.0

      且小于 1.0。

    童鞋们可以自行验证一下。

    代码块

      代码块概述:

      * 在Java中,使用{}括起来的代码被称为代码块。

      代码块分类:

      * 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码

        块,同步代码块(多线程讲解)。

    常见代码块:

      * a:局部代码块

        在方法中出现;限定变量生命周期,及早释放,提高内存利用率

      * b:构造代码块 (初始化块)

        在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调

        用构造都执行,并且在构造方法前执行

      * c:静态代码块

        在类中方法外出现,并加上static 修饰;用于给类进行初始化,在加载的

        时候就执行,并且只执行一次。

    一般用于加载驱动

    class Text {
    static {
    System.out.println("静态代码块");
    }
    {
    System.out.println("构造代码块");
    }
    public Text() {
    System.out.println("构造方法");
    }
    }
    public class Demo { 
    static {   System.out.println("Demo 静态代码块"); } public static void main(String[] args) {
      System.out.println("我是 main 方法");   Text s1 = new Text();
       Text s2 = new Text(); } }

    运行结果:

    可以看出,执行顺序 静态代码块>构造代码块>构造函数

     面向对象之继承

      继承(extends)概念:

        让类与类之间产生关系,子父类关系

      继承的好处:

        * a:提高了代码的复用性

        * b:提高了代码的维护性

        * c:让类与类之间产生了关系,是多态的前提

      继承的弊端:

        * 类的耦合性增强了。

        * 开发的原则:高内聚,低耦合。

        * 耦合:类与类的关系

        * 内聚:就是自己完成某件事情的能力

      继承的特点:

        * a:Java只支持单继承,不支持多继承。(一个儿子只能有一个爹)

        * 有些语言是支持多继承,格式:extends 类1,类2,...

        * b:Java支持多层继承(继承体系) * 如果想用这个体系的所有功能用

       最底层的类创建对象

        * 如果想看这个体系的共性功能,看最顶层的类

      继承的注意事项:

        * a:子类只能继承父类所有非私有的成员(成员方法和成员变量)

        *b:子类不能继承父类的构造方法,但是可以通过super(马上讲)关键字去访

      问父类构造方法。

        * c:不要为了部分功能而去继承

      什么时候使用继承:

      * 继承其实体现的是一种关系:"isa"。如果有两个类A,B。

      只有他们符合 A是B的一种,或者B是A的一种,就可以考虑使用继承

     this和super的区别和应用:

      this和super的用法很相似。

      this代表本类对象的引用。

      super代表父类的内存空间的标识。

      this和super的使用区别:

        * a:调用成员变量

        *this.成员变量 调用本类的成员变量,也可以调用父类的成员变量

        *super.成员变量 调用父类的成员变量

         b:调用构造方法

        *this(...) 调用本类的构造方法

        *super(...) 调用父类的构造方法

        * c:调用成员方法

        *this.成员方法 调用本类的成员方法,也可以调用父类的方法

        *super.成员方法 调用父类的成员方法

    final关键字

      final修饰特点

        1,final修饰的类是一个最终类,不能在派生子类。

        2,final修饰的方法是最终方法,不可以给重写。

        3,final 修饰的变量是一个常量,只能被赋值一次。 被 final 修饰的常量名

        所有的字母都是大写的。如果由多个单词组成单词间通过 _ 连接。

        4,可以通过构造代码块或者构造函数赋值一次。

          * 基本类型,是值不能被改变

          * 引用类型,是地址值不能被改变,对象中的属性可以改变

  • 相关阅读:
    说说内核与计算机硬件结构
    为什么51单片机的地址总线是16位的,但是它却是8位机?
    哈弗结构与冯诺依曼结构
    关于ARM的内核架构
    Bootloader之uBoot简介(转)
    mysql优化
    java上传并下载以及解压zip文件有时会报文件被损坏错误分析以及解决
    [Java]读取文件方法大全
    request相关研究
    session与cookie
  • 原文地址:https://www.cnblogs.com/XiDaPuBen/p/8267234.html
Copyright © 2020-2023  润新知