匿名对象 构造方法 重载 构造代码块 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中静态代码块 构造代码块 构造方法的执行顺序及其注意问题 首先要知道静态代码块是随着类的加载而加载,而构造代码块和构造方法都是随着对象的创建而加载 当时做了这么一个小案例(想必 ...
随机推荐
- ovirt配置为cas登录
准备工作 Ovirt测试机.CAS服务器.AD服务器 cas.crt -- CAS服务器的CA证书 allwinner.cer -- CAS服务器的证书颁发机构根证书 Ovirt测试机要求:apach ...
- SDN/NFV运营商商业化部署
三大运营商发布未来网络架构,并逐步加快SDN/NFV商业化部署的步伐.中国联通发布其新一代网络架构<CUBE-Net 2.0白皮书>,并与20多家合作伙伴共同启动了“新一代网络”合作研发计 ...
- js对Cookie的读写操作
//读Cookie function getCookie(objName) {//获取指定名称的cookie的值 var arrStr = document.cookie.split("; ...
- mysql 5.5 修改字符编码
修改/etc/mysql/my.cnf 配置文件: 最后重启mysql 服务,再查看: 编码已经改好了,可以支持中文字符编码了.
- 破解激活Win10无风险?激活后删除激活工具无影响===http://www.pconline.com.cn/win10/693/6932077_all.html#content_page_4
1Windows激活:测试环境搭建 随着Windows 10的发布,许多用户都用上了这个新一代的操作系统.Windows 10有个最好的设置就是,只要你在已经激活的旧系统中升进行升级操作,就能获得一个 ...
- css-关于位置
当你设置一个你想要相对的模块为relative 你这个模块为absolute 则你的这个absolute会相对relative的那个模块进行移动.
- java servlet
回顾 1三要素是什么? 入口(login.html) 处理(LoginServlet.java) 出口 (success.jsp) 2如何访问servlet http://IP:port/p ...
- 摆脱Spring 定时任务的@Scheduled cron表达式的困扰
一.背景 最近因为需要,需要适用Spring的task定时任务进行跑定时任务,以前也接触过,但是因为懒没有好好地理解@Scheduled的cron表达式,这次便对它做了一个全方位的了解和任务,记录下来 ...
- Destroying The Graph(poj 2125)
题意: 给你一张有向图,你可以选择一个点:• 摧毁其所有的入边,代价A[i].• 摧毁其所有的出边,代价B[i].• 求摧毁这张图的最小代价.• 数据范围1000 /* 很经典的一道题目(我这么弱,稍 ...
- Android Studio 关联源码问题
Android Studio 点击某个类查看源码有时候会出现如下情况 这种情况并不是每个项目都会出现这种情况,那是因为项目的编译版本不同,有的关联了Sources中的源码,而有的没有. 下面说一下具 ...