匿名对象 构造方法 重载 构造代码块 this 关键字
一.匿名对象
1.匿名对象 :没有名字对象
2.匿名对象的使用注意点:
1.我们一般不会用匿名对象给属性赋值,无法获取属性值。
2.匿名对象永远都不可能事一个对象。
3.匿名对象的好处 : 书写简单。
4.匿名对象的使用场景 :
1.如果一个对象需要调用一个方法一次的时候,就可以用匿名对象来调用。
2.可以作为实际参数在方法中调用。
二.构造方法
1.构造方法:在java中类似OC中的初始化方法
2.OC初始化方法的特点 :
1.可以在对象创建时初始化属性值。
2.初始化方法只能被调用一次。
3.构造方法的作用 :给对应的对象进行初始化,对象创建时初始化属性值。
4.如何来创建构造方法:
格式 :
修饰符 类名(参数列表){}
5.构造方法使用注意点:
1.方法名和类名保持一致
2.构造方法没有返回值的。
3.构造方法不是由我们手动调用的,而是在对象被创建时由java虚拟机调用的。
4.如果一个类我们没有给他定义构造方法,jvm在编译的时候会给这个类默认添加一个无参的构造方法。
5.如果你自己定义构造方法,jvm就不会在创建无参的构造方法。这个时候需要自己定义一个无参的构造方法。
6.构造方法中是可以调用普通方法的
在同一个类中,方法的调用直接拿到方法名调用就可以了。
7.构造方法中是可以调用普通(实例)方法。
8.构造方法中是否可以调用构造方法?
可以的
9.构造方法中如何调用的?
this(参数);
10.使用注意点 :
1.this调用构造方法,必须是构造方法中的第一个语句。
2.不要相互调用构造方法。
class Person
{
//公有的属性
String name;
int age; //创建一个构造方法
public Person(String n,int a){ //给属性赋值
name = n;
age = a;
} public Person (){ } //行为 ,普通方法
public void work(){ System.out.println(name +"正在工作");
}
} class Demo1
{
public static void main(String[] args)
{ //创建一个Person对象,同时给属性赋值
Person p = new Person("老王",38); //调用工作的方法
p.work();
//
Person p1 = new Person();
p1.name = "老宋";
p1.work(); }
}
//老王正在工作
//老宋正在工作
二.重载
1.重载:在java中方法是可以重名的,我们把这种重名的方法
2.方法重载的使用注意事项:
1.必须是方法名一样,才可以叫方法重载
2.任何方法都可以实现方法的重载。
3.保证参数列表的参数的顺序或者个数不一样
class Baby
{ //公有的属性
String name;
String sex;
int age; {
//调用小孩哭的方法
cry();
} //创键构造方法
Baby(String n,String s,int a){ // 局部变量 :必须初始化 //给属性赋值
name = n;
sex = s;
age = a; } //参数的个数不一样。
Baby(String n,String s){ name = n;
sex = s; } //和第一个对比参数的顺序不一样
Baby(String s,int a,String n){
name = n;
sex = s;
age = a; } //不带参数的构造方法
Baby(){ } //公有的行为
public void cry(){ System.out.println(name+"在哭1");
} public void cry(String name){ System.out.println(name+"在哭2");
} } class Demo1
{
public static void main(String[] args)
{ //创建一个baby类
Baby b = new Baby("狗蛋","男",1);
//小孩饿了
b.cry(); //狗蛋又有一个小弟弟
Baby b1 = new Baby("二狗子","男");
//哇哇地哭
b1.cry();
}
}
//null在哭1
//狗蛋在哭1
//null在哭1
//二狗子在哭1
三.构造代码块
1.构造代码块的作用 : 给对象统一初始化。
2.构造代码块的格式 :
{
}
3.注意 :
构造代码块必须是写在成员的位置上的
4.代码块 :
1.构造代码块
2.局部代码块 写在方法中 也是以大括号来表示。
3.静态代码块 后面讲。
5.构造代码块的使用注意点 :
1.java中编译器编译一个java源文件的时候,会把成员变量的声明放在类的最前面。
2.成员变量的初始化都是在构造方法中执行的。
3.一旦经过java编译器编译后,那么构造代码块中的代码会移到构造函数中执行
4.成员变量的显示初始化和构造代码块,按照当前代码的顺序来执行的,谁在后面就显示谁。
class Person
{ //公有的属性
String name;
String sex;
int age; // 问题 : 构造代码块在什么时候被执行。 {
System.out.println("我是代码块");
} //公有的方法
public void work(){ System.out.println(name+"在工作");
}
} class Demo1
{
public static void main(String[] args)
{ Person p = new Person(); Person p1 = new Person(); Person p2 = new Person();
}
}
//我是代码块
//我是代码块
//我是代码块
四.this 关键字
1.this : 代表所属方法的调用对象。和OC 中的self很象。
2.this关键字的作用 :
1.如果成员变量和局部变量重名,在方法中时默认调用局部变量,通过this可以让方法调用成员变量。
3.this关键字的使用注意点 :
1.存在域成员变量同名局部变量,方法内部会访问局部变量(java采用一个就近原则)
2.在方法中不存在和成员变量同名的局部变量,java编译器在编译时会默认给变量前面加一个this.
class Person
{
//公共属性
String name; //构造代码块 //创建一个构造方法
public Person (String name , int age){ //就近原则 this.name = name; // 两个name都是指的时局部变量的name.
this.age =age; // 两个age都是指的时局部变量的age } int age = 20; {
age = 18;
} public void work(){ //创建一个局部变量 变量名也叫name
//String name = "老宋"; System.out.println(name+"在工作");//null
} } class Demo1
{
public static void main(String[] args)
{ Person p = new Person("老王",30); p.work(); System.out.println(p.age); //打印老王的年龄 //老曹 :20 老肖:18 老陈:18 老王 :20 }
}
//老王在工作
//30
匿名对象 构造方法 重载 构造代码块 this 关键字的更多相关文章
- JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块
JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...
- About 静态代码块,普通代码块,同步代码块,构造代码块和构造函数的纳闷
构造函数用于给对象进行初始化,是给与之对应的对象进行初始化,它具有针对性,函数中的一种.特点:1:该函数的名称和所在类的名称相同.2:不需要定义返回值类型.3:该函数没有具体的返回值.记住:所有对象创 ...
- Java中静态代码块、构造代码块、构造函数、普通代码块
在Java中,静态代码块.构造代码块.构造函数.普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序. 1.静态代码块 ①.格式 在java类中(方法中不能存在静态代 ...
- 黑马程序员——JAVA基础之构造函数,构造代码块
------- android培训.java培训.期待与您交流! ---------- 构造函数特点: 1. 函数名与类名相同 2. 不用定义返回值类型 3. 不可以写return语句 构造函数 ...
- java中父类子类静态代码块、构造代码块执行顺序
父类静态(代码块,变量赋值二者按顺序执行) 子类静态 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法 普通方法在实列调用的时候执行,肯定位于上面之后了 //父类A public class ...
- Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员、局部),匿名对象的调用,构造代码块(5)
Java面向对象(概述,构造函数,类与对象的关系,this关键字,成员.局部),匿名对象的帝爱用,构造代码块(5)
- -1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态 包 访问权限 内部类 匿名内部类 == 与 equal
java是纯粹的面向对象的语言 也就是万事万物皆是对象 程序是对象的集合,他们通过发送消息来相互通信 每个对象都有自己的由其他的对象所构建的存储,也就是对象可以包含对象 每个对象都有它的类型 也就是 ...
- java中-静态代码块、构造代码块、构造方法的联系
例如该题: 1 class Fu{ static { System.out.println("这是父类静态代码块"); } { System.out.println("这 ...
- java学习(一)静态代码块 构造代码块 构造方法的执行顺序及注意问题
今天我总结了一下java中静态代码块 构造代码块 构造方法的执行顺序及其注意问题 首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载 当时做了这么一个小案例(想必 ...
随机推荐
- 对偶SVM
1.对偶问题的推导 为什么要求解对偶问题?一是对偶问题往往更容易求解,二是可以自然的引入核函数. 1.1 用拉格朗日函数将原问题转化为"无约束"等价问题 原问题是: 写出它的拉格朗 ...
- Python AES - base64 加解密
首先python引用AES加密 from Crypto.Cipher import AES 需要先安装 Crypto 模块, 可以使用 easy_install 进行安装 会自动去官网进行搜索 ...
- 使用vue1.0+es6+vue-cli+webpack+iview-ui+jQuery 撸一套高质量的后台管理系统
首先按照vue.js官网的指令安装: 1.本地安装好node.js 2.根据官方命令行工具 详情 这样一个官方的脚手架工具就已经搭建好了:但是有一点需要注意的是由于现在按照官方的搭建方法是搭建vue2 ...
- SSH使用详解
一.SSH基础 (1)什么是SSH? 传统的网络服务程序,如:ftp.pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据.而且 ...
- java Timer 定时每天凌晨1点执行任务
import java.util.TimerTask;/** * 执行内容 * @author admin_Hzw * */public class Task extends TimerTask { ...
- ASP.NET中的chart控件绑定SQL Server数据库
网上很多的chart控件的实例都没有绑定数据库,经过一番摸索后,终于实现了chart控件绑定数据库. 首先,在Visual Studio中建立一个网站,新建一个WebForm项目,名称为ChartTe ...
- webstorm基础使用总结
webstorm基础使用总结(不仅仅是一堆快捷方式) 注:原文链接: 水车 : 本次写的内容是我想到那个就写那个,都是本人平时写代码的时候的一些习惯,未必是最好的,贵在交流! 1: shift+e ...
- jQuery- 表单验证插件-Validation
▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法, ...
- MySQL Fabric和MyBatis的整合过程中遇到的问题
这是我昨天在整合MySQL Fabric和MyBatis时遇到的问题,花了大半天才解决的问题,解决的过程中在网上查找了很久,都没有找到解决的方案.现在记下来,希望能够帮助有同样问题的朋友.如果各位朋友 ...
- Sql server2012还原备份文件语句
--sql2012还原sql2008语句 --选择master数据库,新建查询 输入下面sql语句 --选择兼容模式(sql 2008)创建数据库db(还原时db写成原生数据库名称) RESTORE ...