1. 变量方法初始化顺序

字段(类的属性值) –> 构造函数 –> 方法(调用时加载)

不论变量放在哪儿都会先于任意一个方法的执行前执行,包括构造方法,而构造方法是一个类必须
会执行的方法,不需要显示的进行调用。同时,不论变量在哪儿分布,只要在方法外部,就一
定先于方法初始化。

**测试小案例:**

public class Person {public Person(int id) {System.out.println("person(" + id + ")");}public static void main(String[] args) {Build b = new Build();}}class Build {Person p1 = new Person(1);public Build() {System.out.println("this is build's block!");Person p2 = new Person(2);}Person p3 = new Person(3);}输出结果:person(1)person(3)this is build's block!person(2)

———- **2.初遇静态关键字static** ——————-

特点:

(1)只在装载时(装入.class文件后)初始化一次,
(2)外部对象引用:可以通类名直接访问

测试小案例:

public class Person {/*静态块*/static{System.out.println("this is static block!");}/*非静态块*/{System.out.println("this is non-static block!");}public Person(int id) {System.out.println("person(" + id + ")");}public static void main(String[] args) {Person p1 = new Person(1);Person p2 = new Person(2);}}输出结果:this is static block!this is non-static block!person(1)this is non-static block!person(2)

Java程序执行顺序

静态块 –> 构造方法 –> 静态属性 –> 非静态块 属性 –> 构造器

1、先装载.class文件,创建Class对象,对静态数据(由static声明的)进行初始化,
而且只进行一次初始化。(如果有父类,先加载父类的静态快 静态变量)
2、new Build()在堆上进行空间分配。创建时执行构造方法,先父后子
3、执行非静态块。
4、执行所有方法外定义的变量的初始化。
5、执行构造器
非静态方法不加载,使用时加载

父类静态 –> 子类静态 –> 父类构造方法 –> 子类构造方法


3.属性:

类中的属性一般分为类属性(全局变量)、实例属性(全局变量)、局部属性(局部变量)。(名称可以不一样,意思到就好)

类属性:
前面已经说过就是那些声明为static的属性,在整个过程中只进行一次初始化,在内存中只开辟一个空
间,不论在哪儿调用,值保持一致。一旦被修改,所有引用它的地方都会跟着修改。一般直接通过类名进行调用。

实例属性:
实例变量是可以不进行初始化,比如一个整型的实例变量假如没有初始化,则默认值为0;而局部变量
假如不赋初值语法上是通过的,但是在使用这个变量是程序就报错了。实例变量在堆和栈中都分配内存空间,在
堆当中分配的是对象本身,而栈中则是对这个对象的引用。

局部属性:
局部变量是在方法内部声明的变量,生命期仅在方法内,方法结束后变量就消失了;局部变量必须初始化再使用,
否则会报错,也就是说,假如你在方法内定义了一个局部变量,并且没有赋值,那么你在使用这个变量的时候一定
得赋值,不然就报错了。同时,局部变量可屏蔽全局变量。


4.重载:

指在同一个类中,具有相同的方法名,不同的参数列表的方法之间的一种机制。
参数列表的不同体现在:类型不同、个数不同、顺序不同,只要满足任一一个,就可以进行方法重载。

重载的好处:
增强了程序的可读性和易于维护,当有很多个功能相似的方法的时候,如果我们为每个方法设计一个名称,
想通过名称来区分它们的话,会很糟糕,而且会让人觉得程序的可读性差,设计不够巧妙

注意:试图通过返回值来进行方法重载是不正确的! 会报错,,原因,无法确定该调用那个方法


5.重写:

重写是在继承中存在的,在两个类(子类和父类之间存在的关系)中,子类重写父类的方法,
方法名相同,参数也相同的一种机制。与重载类似,重写是写和父类相同方法名和相同参数的方法,对父类方法进行覆盖

     public class B extends A {  public String a(String name) {  return "welcome to you :" + name;  }  }  class A {  public String a(String name){  return "hello:"+name;  }  }

6.类与对象的关系:

    public class B {  public static void main(String[] args) {  B b = new B();  A a = new A();  }  }  class A {  }  

1、类是一类具有相同属性的事物的统称,是一种抽象。
2、对象是类的具体体现,又称实例。
3、类是一种静态的概念,而对象是一种动态的机制。


测试用例:package ObjectTest;public class StrdyObject {public static void main(String[] args) {
//      Test2 test2 = new Test2("学习java");
//      test2.parents(10);
//      test2.parents(20);
//      System.out.println(Test2.intI);
//      System.out.println(test2.intI);Test2 test2 = new Test2();test2.studyRewrite(100,102);test2.studyIndefinite("ddd","mmm","kkl");}
}/*** * java程序执行顺序测试* @author 郑思林**/
class Parents{/** java执行顺序测试* */
//  static Parents parents = new Parents("父类中的Test2中字段实例化静态");
//  static{//      System.out.println("父类中的static块中的内容");
//  }
//  static int i = 100;
//
//  public final void parents(int t){//      //int i = 100;
//      i = i + t;
//      System.out.println("静态成员方法   " + i);
//  }
//
//  public Parents(String string) {//      System.out.println(string);
//  }
//
//  public Parents() {//      System.out.println("parents中的构造方法");
//      //Test2 test2 = new Test2("新建对象");
//  }public void studyRewrite(int i){System.out.println(i);}public void studyRewrite(int i,int j){System.out.print(i + j);}
}class Test2 extends Parents{/** java执行顺序测试*/
//  static int intI = 10;
//  static{
//      System.out.println("子类中的static块中的内容");
//  }
//
//  static Parents parents = new Parents("Test2中字段实例化静态");
//  Parents test1 = new Parents("Test2中字段实例化");
//  public Test2(String string) {//      System.out.println(string);
//  }/** 重写测试*/
//  public void studyRewrite(int i,int t){//      System.out.println(i+10);
//  }/** 不定参数测试*/public void studyIndefinite(String ...strings) {System.out.println(strings[1]);}
}/** final 和 abstract 只能用一个*/
//final abstract class abstractClass{//
//}/** 执行顺序测试*/// class Person {
//
//    public Person(int id) {
//        System.out.println("person(" + id + ")");
//    }
//}  //public class StrdyObject {
//     static
//    /*静态块*/
//   {
//       int staticint = 100;
//        System.out.println("this is static block!");
//    }
//    /*非静态块*/
//    {
//        System.out.println("this is non-static block!");
//    }
//    Person p1 = new Person(1);//------------1-----------
//
//    public StrdyObject() {
//        System.out.println("this is build's block!");
//        Person p2 = new Person(2);
//    }
//
//    Person p3 = new Person(3);
//
//    public static void main(String[] args) {
//        StrdyObject b = new StrdyObject();
//
//    }
//}  

2--java面向对象语法学习(部分1-变量,重载,重写)相关推荐

  1. 【关于JAVA面向对象的学习】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.面向过程与面向对象 二.面向对象 1.面向对象编程 2,面向对象编程的三大特性 a,封装 b,继承 (1)obje ...

  2. Day5:Java基础语法学习6.9

    总目标:学会JAVA 本周目标:Java的入门知识(6.5--6.12) 今日目标:Java基础语法学习(1)6.9 注释 注释并不会被执行,是给我们写代码的人看的 Java中的注释有三种: 单行注释 ...

  3. Java面向对象——最近学习总结

    Java面向对象 文章目录 Java面向对象 前言 一.类与对象 1.什么是类与对象: 2.类与对象都有些什么?怎么创建?怎么用? 二.方法 1.方法的签名 2.方法的重载与重写 3.构造方法 4.n ...

  4. Java面向对象基础学习笔记(构造、重载、继承、多态、抽象类、接口、模块)

    Java面向对象编程包含哪些内容? 怎么理解面向对象编程? 现实生活中,我们定义了"人"的抽象概念,这就是类class,生活中的每一个具体的人就是实例instance. class ...

  5. [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍

    参考链接: 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中  方法外 调 ...

  6. JAVA面向对象编程学习 (1)语法基础与类与对象

    读入函数 Scanner in=new Scanner(System.in);System.out.println(in.nextLine()); 意思是先new一个Scanner类的对象叫in,然后 ...

  7. java基础语法学习

    1.java技术体系平台 Java SE标准版 支持面向桌面级应用(如windows下的应用程序)的java平台,提供了完整的java核心api Java EE企业版 是为开发企业环境下的应用程序提供 ...

  8. JavaSE——Java基础语法(二进制、变量、方法(函数)、运算符、转义字符)

    第2节 基础语法 一.二进制 1.1 二进制介绍 计算机中的数据都以二进制数字保存. 二进制 :逢二进一,即只有0.1两个值.如十进制的10在计算机内保存为二进制的1010. 计算机中信息的存储单位: ...

  9. java—面向对象【学习笔记2】

    目录 构造方法 this关键字 static关键字 java中类成员在构造(对象创建的时候)的调用顺序 构造方法                                            ...

最新文章

  1. 《梦断代码》阅读笔记01
  2. JPA(一):十分钟入门 JPA
  3. Apk文件结构, Dex反编译
  4. 索引的概念和创建索引例子
  5. lightoj 1214
  6. 【APICloud系列|19】上架APPStore需要准备哪些材料?
  7. pthread_join()函数理解
  8. JAVA编码(27)——执行批量导入Excel文件并进行解析
  9. Mysql学习总结(38)——21条MySql性能优化经验
  10. python3+requests接口自动化-其他接口封装
  11. IntelliJ IDEA 查看类继承关系图,太强大了!
  12. C#多线程之线程同步篇2
  13. 套用这套模板,玩转周报、月报、年报更省事
  14. 虚拟机和主机快捷键切换
  15. 【思维导图】她提出了“计算思维”,并解释我们为什么要学会跟机器对话 | 造访·周以真【整理自公众号:造就】
  16. 认识ZBrush? 4R7视图区
  17. 360Wonder监控系统,设计和开发经验之谈
  18. 计算机常见总线插槽,“插槽”和“总线”的定义_CPUCPU评测-中关村在线
  19. MSP430初学:MSP430单片机C语言基础(二)
  20. java选中多张图片上传

热门文章

  1. 知识追踪之动态键值对记忆网络 Dynamic Key-Value Memory Networks for Knowledge Tracing
  2. 基于Simulink融合IMU传感器数据(附源码)
  3. 随笔7:R语言绘图黑白印刷风格芯片包
  4. Ventoy 制作U盘启动盘 使用教程
  5. 从零开始学习CANoe(十九)—— Diagnostics
  6. HTML的基础入门,快来看看吧~
  7. 如何在百度搜索到自己的网站?新站必看
  8. explorer被微信企业版劫持一例
  9. SVN 具体某一行代码是谁添加的
  10. RSA加密算法补充签名验签部分