java面向对象(二)构造函数和构造代码块
面向对象
类成员
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. 多个构造函数是以重载的形式存在的
对构造函数的几点解释:
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面向对象(二)构造函数和构造代码块的更多相关文章
- java基础8 构造函数和构造代码块
一.构造函数 1 构造函数的作用 给对应的对象进行初始化. 2 构造函数的格式 修饰符 函数名(形式参数){ //函数名就是类名 函数体 } 举例说明: class Perosn{ private i ...
- 黑马程序员——JAVA基础之构造函数,构造代码块
------- android培训.java培训.期待与您交流! ---------- 构造函数特点: 1. 函数名与类名相同 2. 不用定义返回值类型 3. 不可以写return语句 构造函数 ...
- java基础-静态,非静态(构造)代码块,类加载
static block and non-static block(constructor block) [toc] 想来想去,先来一题比较好 public class Foo { public st ...
- 关于java构造函数,静态代码块,构造代码块,和普通代码块相关总结(一)
构造函数.构造代码块和静态代码块容易混淆,它们的执行条件和执行顺序也常常容易犯迷.这里就针对这些问题说一下我个人的一些理解,顺便对这部分内容做个小结. 一.构造函数 格式:类名(参数1,参数2,-){ ...
- 5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别
构造代码块: 在类中定义可以给所有对象进行初始化.局部代码块: 在方法中定义属性的生命周期.静态代码块: 在类中定义用于给类调用时属性的初始化 构造函数与构造代码块的区别: 构造函数是给对应的对象进行 ...
- Java类中代码的执行顺序 静态代码块>构造代码块>构造方法
一:静态代码块 注意是代码块,不是静态函数.函数要调用才执行,代码块加载就执行,一般是静态变量的声明与初始化.被static修饰的代码块(赋值.输出操作等).类中静态语句块仅在类加载时被执行一次 如 ...
- 牛客网Java刷题知识点之什么是代码块、普通代码块、静态代码块、同步代码块、构造代码块以及执行顺序
不多说,直接上干货! 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说代码块是不能单独运行的,它必须要有运行 ...
- java提高篇(十一)-----代码块
在编程过程中我们可能会遇到如下这种形式的程序: public class Test { { //// } } 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起, ...
- Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员、局部),匿名对象的调用,构造代码块(5)
Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员.局部),匿名对象的帝爱用,构造代码块(5)
随机推荐
- 唐诗宋词APP
古诗词个人爱好,已收集5万多首唐诗以及1万多首宋词,因时间有限目前只开发了苹果版,后期开发安卓版, <风月醉>一 国学经典,有兴趣的可以下载学习古诗词,有问题可以留言哦! https:// ...
- Spring0-前言序
Spring的简介 一般情况下我们说的Spring是指SpringFramework,而SpringFramework实际上只是Spring家族中的一个分支而已,这在下一章会介绍 Spring实际上也 ...
- Git 仓库拆分
方案对比 subtree 使用命令 git subtree split -P dirPath -b branchName 将目标文件夹的代码都保存到指定分支.试了下,该方案虽然保留了 commit,但 ...
- 详解CSS布局
CSS页面布局允许我们拾取网页中的元素,并且控制它们相对正常布局流.周边元素.父容器或者主视口/窗口的位置.主要对文档流的改变进行布局.假设你已经掌握了CSS的选择器.属性和值,并且可能对布局有一定了 ...
- 大话MySQL锁
一.锁介绍 不同存储引擎支持的锁是不同的,比如MyISAM只有表锁,而InnoDB既支持表锁又支持行锁. 下图展示了InnoDB不同锁类型之间的关系: 图中的概念比较多不好理解,下面依次进行说明. 1 ...
- TurtleBot3 Waffle (tx2版华夫)(6)
重要提示:请在配网通信成功后进行操作,配网后再次开机需要重新验证通信: 重要提示:[Remote PC]代表PC端.[TurtelBot]代表树莓派端: 操作步骤如下: 1)[Remote PC] 启 ...
- 第十章节 BJROBOT PID 动态调节【ROS全开源阿克曼转向智能网联无人驾驶车】
1.把小车架空,平放在地板上,注意四个轮子一定要悬空.用资料里的虚拟机,打开一个终端 ssh 过去主控端启动 roslaunch znjrobot bringup.launch. 2.在虚拟机端再 ...
- vue中使用AES.js和crypto.js加密
一:crypto-js加密 1.1:安装依赖 npm install crypto-js --save-dev 1.2 :在项目目录上创建一个js文件里面写入加密,解密的代码 mport Crypto ...
- Game of Sum
可以知道整体石子的总和一定的,所以一个人的得分越高,另一个人的得分就越低.不管怎么取任意时刻游戏的状态都是原始序列的一段连续子序列(即被玩家取剩下的序列). 因此,用d(i,j)表示玩家A在i到j部分 ...
- vue的路由组件挂载。
vue通过多种方式可以将组件挂载到一个页面上.挂载方式有四种.其实也并不止四种.这里呢就简单的提四种方式去怎样挂载组件. 第一种就是作为标签形式挂载.前面也提到. 后面的就是一般的挂载组件和按需挂载组 ...