匿名对象 构造方法 重载 构造代码块 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中静态代码块 构造代码块 构造方法的执行顺序及其注意问题 首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载 当时做了这么一个小案例(想必 ...
随机推荐
- Socket网络编程二
SocketServer socketserver一共有这么几种类型 class socketserver.TCPServer(server_address, RequestHandlerClass, ...
- linux Mint18 backspace怎么不能连续删除
打开菜单--->首选项--->键盘,如下图所示: 打开启用重复按键即可,就可以随心所欲的连续删除,连续移动光标了
- Visual Studio 常用快捷键备忘
在代码中插入书签 用途 操作 vs2013 快速在自定义的不同代码位置跳转 首先点击: 编辑=>书签=>启用书签 然后再在代码编辑窗口 ctrl+k, k (取消书签,再按一次 ctr ...
- WebView随学笔记
对于WebView而言我们需要掌握的内容是: /** 学习目标:webView * 1).将WebView加入到应用中 * 2).使用WebView加载页面 * 3).获取网络访问 * 4).在Web ...
- varchar后面是否定义长度,还是有区别的
' ' PRINT @year 结果是:2 ) ,' ' PRINT @year 结果是:2015 varchar是否定义长度,还是有区别的,不定义长度的时候,并非我想象中按照实际赋值自动填充,似乎默 ...
- KNN识别图像上的数字及python实现
领导让我每天手工录入BI系统中的数据并判断数据是否存在异常,若有异常点,则检测是系统问题还是业务问题.为了解放双手,我决定写个程序完成每天录入管理驾驶舱数据的任务.首先用按键精灵录了一套脚本把系统中的 ...
- CentOS7 下ifconfig command not found解决办法
今天尝鲜用VMWare安装了CentOS7,选择了最小安装包模式,安装完毕之后想查看一下本机的ip地址,发现报错 # ifcon -bash: ifconfig: command not found ...
- 如何获取苹果手机的UDID
获取苹果手机的UDID有很多种,比如Xcode,iTunes等等吧,个人比较推荐使用iTunes,因为比较官方,而且苹果电脑自带的有,而且Windows也可以下载安装. 1.下载安装itunes(点击 ...
- windows 用默认软件打开文档
System.Diagnostics.Process.Start("Explorer.exe", string.Format("/e, \"{0}\" ...
- struts 2 时间控件
在使用struts2框架时,为我们提供了时间选择器控件:datetimepicker.但是在使用过程中会出现一些问题,主要就是struts2版本更新时做了一些修改.在struts2.0时,使用< ...