面向对象


类成员

1.成员变量

  • 属性
  • 数值类型的基本数据类型默认值是 0
  • 成员变量在任何方法中都能访问,和声明先后没有关系

2.成员函数

方法

3.定义方式

class 类名{成员变量;成员函数} //首字符大写,$_开头

局部变量

  • 定义在方法或者语句中,
  • 没有默认的初始化值,必须手动初始化

数组和函数在堆中

方法在栈中

class ClassDemo1{
public static void main(String[] args){
//创建对象,p指向Person的内存地址
Person p = new Person();
p.run();
}
}
/**
*定义类
*/
class Person{
//成员变量===属性(property)===字段(field)
int height;//身高
int weight;
int age;
public void run(){
System.out.println("run...");
}
}

匿名对象

1.new Person().run();

2.作为参数进行传递

class ClassDemo1{
public static void main(String[] args){
//匿名对象
new Person().run(); }
}
/**
*定义类
*/
class Person{
//成员变量===属性(property)===字段(field)
int height;//身高
int weight;
int age;
public void run(){
System.out.println("run...");
}
}
  • 匿名对象是对象的简化形式

  • 匿名对象两种使用情况

    -- 当对对象方法仅进行一次调用的时候

    -- 匿名对象可以作为实际参数记性传递

构造函数

特点:

  1. 函数名名相同
  2. 不用定义返回值类型
  3. 没有具体的返回值

作用:给对象进行初始化

注意:

1. 默认构造函数的特点

2. 多个构造函数是以重载的形式存在的

对构造函数的几点解释:

1.函数名和类型相同

2.没有返回值

3.如果类没有定义构造函数,jvm分配一个空构造;如果类定义了构造函数,就没有空构造。

4.可以重载

5.创建对象时使用,如:new Car();

class ClassDemo1{
public static void main(String[] args){ Dog d2 = new Dog("white");
System.out.println(d2.getColor());
}
} class Dog{
//成员属性
private String color;
private int age; //构造函数
//空构造
public Dog(){ }
//只有一个参数的构造函数
public Dog(String c){
color = c;
} public void setColor(String c){
color = c;
}
public String getColor(){
return color;
}
}

注意程序中构造函数传参的方式。

另外,构造函数可以有多个,只要参数不同就可以。下面给出三种不同的构造方式。

class ClassDemo1{
public static void main(String[] args){
//第一种构造函数创建对象的方式
Dog d1 = new Dog();
d1.setColor("black");
d1.setAge(1);
System.out.println(d1.getColor() + d1.getAge()); //第二种构造函数创建对象的方式
Dog d2 = new Dog("white");
System.out.println(d2.getColor()); //第三种构造函数创建对象的方式
Dog d3 = new Dog("yellow",2);
System.out.println(d3.getColor() + d3.getAge());
}
} class Dog{
//成员属性
private String color;
private int age; //构造函数
//空构造
public Dog(){ }
//只有一个参数的构造函数
public Dog(String c){
color = c;
} //有两个参数的构造函数
public Dog(String c,int a){
color = c;
age = a;
}
public void setAge(int a){
age = a;
} public int getAge(){
return age;
} public void setColor(String c){
color = c;
}
public String getColor(){
return color;
}
}

构造代码块

1.创建对象的时候调用

2. 在构造函数之前

对象的创建过程:

  • 1.先运行构造代码块

    (从上到下,按序执行)
  • 2.运行构造函数
  • 3.成员变量

    --- 执行顺序:

    a.color = null;如果没有赋值

    b.color = "black";如果在类中赋了初值

    c.构造代码块

    d.构造函数

静态代码块 static{}

类加载期间执行,而且只执行一次,也是从上到下按序执行。

由此,我们可以总结一下这些 类成员

  • 成员变量
  • 成员函数
  • 构造函数
  • 构造代码块 { }
  • 静态代码块 static{}:在类加载期间执行,而且只执行一次。也是从上到下按序执行。

    -- 静态成员之间可以互相访问,按序执行。

    -- 静态成员不可以访问非静态成员,

    -- 可以访问静态成员,

    -- 静态成员通过类访问(和对象无关。比如:Dog.blood)

java面向对象(二)构造函数和构造代码块的更多相关文章

  1. java基础8 构造函数和构造代码块

    一.构造函数 1 构造函数的作用 给对应的对象进行初始化. 2 构造函数的格式 修饰符 函数名(形式参数){ //函数名就是类名 函数体 } 举例说明: class Perosn{ private i ...

  2. 黑马程序员——JAVA基础之构造函数,构造代码块

    ------- android培训.java培训.期待与您交流! ---------- 构造函数特点: 1.  函数名与类名相同 2.  不用定义返回值类型 3.  不可以写return语句 构造函数 ...

  3. java基础-静态,非静态(构造)代码块,类加载

    static block and non-static block(constructor block) [toc] 想来想去,先来一题比较好 public class Foo { public st ...

  4. 关于java构造函数,静态代码块,构造代码块,和普通代码块相关总结(一)

    构造函数.构造代码块和静态代码块容易混淆,它们的执行条件和执行顺序也常常容易犯迷.这里就针对这些问题说一下我个人的一些理解,顺便对这部分内容做个小结. 一.构造函数 格式:类名(参数1,参数2,-){ ...

  5. 5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别

    构造代码块: 在类中定义可以给所有对象进行初始化.局部代码块: 在方法中定义属性的生命周期.静态代码块: 在类中定义用于给类调用时属性的初始化 构造函数与构造代码块的区别: 构造函数是给对应的对象进行 ...

  6. Java类中代码的执行顺序 静态代码块>构造代码块>构造方法

    一:静态代码块 注意是代码块,不是静态函数.函数要调用才执行,代码块加载就执行,一般是静态变量的声明与初始化.被static修饰的代码块(赋值.输出操作等).类中静态语句块仅在类加载时被执行一次 如 ...

  7. 牛客网Java刷题知识点之什么是代码块、普通代码块、静态代码块、同步代码块、构造代码块以及执行顺序

    不多说,直接上干货! 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说代码块是不能单独运行的,它必须要有运行 ...

  8. java提高篇(十一)-----代码块

    在编程过程中我们可能会遇到如下这种形式的程序: public class Test { { //// } } 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起, ...

  9. Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员、局部),匿名对象的调用,构造代码块(5)

    Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员.局部),匿名对象的帝爱用,构造代码块(5)

随机推荐

  1. 【进程/作业管理】篇章一:Linux进程及其管理(系统监控类工具)----glances、dstat

    glances   dstat   glances命令详解 相对于htop工具的使用,这里介绍一下glances工具的使用,我个人是比较喜欢这款工具的,主要就是由于glances这款工具可以将系统状态 ...

  2. 红黑树规则,TreeSet原理,HashSet特点,什么是哈希值,HashSet底层原理,Map集合特点,Map集合遍历方法

    ==学习目标== 1.能够了解红黑树 2.能够掌握HashSet集合的特点以及使用(特点以及使用,哈希表数据结构) 3.能够掌握Map集合的特点以及使用(特点,常见方法,Map集合的遍历) 4.能够掌 ...

  3. MPEG2TS文件格式概述

    总结TS文件格式,早在几个月前就有了这个想法,但一直拖到今天才真正准备写一篇博文来介绍. 再不介绍的话,估计几月后又要去故纸堆里翻东西了,毕竟个人笔记中总结记录的东西太多,搞不好哪天给意外弄丢了. 1 ...

  4. struts文件上传拦截器分析

    struts有默认的文件拦截器,一般配置maximumSize就可以了. 知道原理,我们可以写一个类继承它,实现自己的配置上传文件大小的方式.   然后细究页面上传文件的时候,发现了一些问题. act ...

  5. day114:MoFang:基于支付宝沙箱测试环境完成创建充值订单接口&服务端处理支付结果的同步通知和异步通知

    目录 1.基于支付宝提供的沙箱测试环境开发支付接口 1.后端提供创建充值订单接口 2.前端调用AlipayPlus发起支付 3.注意:自定义APPLoader完成接下来的开发 4.下载支付宝沙箱钱包A ...

  6. [leetcode]82. Remove Duplicates from Sorted List

    第一题:遍历链表,遇到重复节点就连接到下一个. public ListNode deleteDuplicates(ListNode head) { if (head==null||head.next= ...

  7. 不是RESTful不好,是你姿势有问题

    文章来源:https://ningyu1.github.io/site/post/01-restful-design-specifications/ 一. 摘要(Abstract) RESTful A ...

  8. [Leetcode刷题]——链表

    一.找出两个链表的交点 160.相交链表(easy)2021-01-05 编写一个程序,找到两个单链表相交的起始节点     如下面的两个链表,在c1 处相交: public class Soluti ...

  9. python学习笔记 | 顺序表的常规操作

    ''' @author: 人人都爱小雀斑 @time: 2020/3/11 8:46 @desc: 顺序表的相关操作 ''' class SequenceList: def __init__(self ...

  10. 使用 gRPCurl 调试.NET 5的gPRC服务

    介绍 你用过 Curl 吗?这个工具允许你通过 http 来发送数据,现在有一个适用于gGRPC的工具,gRPCurl,在本文中,我将介绍如何下载安装这个工具,然后通过这个工具调试我们.NET 5上面 ...