【JAVA之三】类与对象扩展.构造方法
来源:互联网 发布:淘宝代码怎么用的 编辑:程序博客网 时间:2024/06/06 03:58
【JAVA之三】类与对象扩展.构造方法
写在前面:这是对第一节的问题的必要的补充,以后会有很多类似的补充,原因很简单,接触的越多,我们才可以理解的越深入。
知识循序渐进,由浅入深。
零.类的复习
<1>类的编写
格式如下:
public class 类名 { 属性的编写:
访问修饰符 (public,private, ,protected) 数据类型 属性名
public int longth;
private int logth;
int logth;
pritected int logth;
他们都是表示一个属性(logth),但是他们的访问修饰符不一样。对于访问修饰符的问题我们以后再讲。
public String ; public int width; //规定了这个phone的所应具有的特征(类的属性)
方法的编写:
访问修饰符 返回值类型 方法名(数据类型 参数名,…){
方法内容
}
public void call(String x){ System.out.println(name+”正在拨打”); } // 规定了这个phone的所应具有的特征 (类的方法) }
一.构造方法
复习的时候我们提到了方法。这个突然冒出的方法是从哪里来的呢?
回答这个问题,我们需要提到对象的建立:
格式如下:
类名 对象名 = new 类名();
其实 ‘new 类名();’的另一种写法是‘new 构造方法();’
你看,构造方法出现在了我们的面前;其实构造方法一直都在,当我们在类中没有写构造方法时,其实JVM已经帮我们写了一个构造方法,且这个方法没有参数。
其实我们也可以自己去写构造方法:
格式为:
访问修饰符 构造方法名【类名】(数据类型 参数名,…){
}
学到这里是我们来总结一下:
1.如果你没有在类中定义构造方法,那么JVM会默认给你提供一个构造方法(无参数的构造方法);
2.如果你在类中定义了构造方法,则JVM不会提供默认
3.3.方法所带的参数(参数个数、参数类型、参数顺序)必须要不同。
二.构造方法的用法
那么构造方法是来做什么的呢?
我们来看下面的程序
1.
public class J0710 {
private String name;
public void study(){ System.out.println("在学习");}
public static void mian(String [] args){
J0710 J = new J0710();
J.study();
}
}
输出结果:
2.
public class J0710 {
private String name;
public J0710(String name){
this.name = name;
}
public void study(){ System.out.println(name+"在学习");}public static void main(String [] args){J0710 j = new J0710("安东");j.study();
}
输出结果:
安东在学习
这样我们可以更好的了解了构成对象的结构:类名 对象名 = new 构造方法名();
这里可以知道构造方法的其中之一的作用是:将对象实例化。
那么我们来稍稍比较一下构造方法和其他对象的区别:
1.数据类型不同(构造方法后面没有数据类型)
2.方法名不同(构造方法的方法名就是类名)
3.作用不同(构造方法是为了实例化对象)
4.构造方法每使用一次就会实例化一个新的对象;普通方法使用时会根据对象不同而调用不同对象的方法。
三.方法重载
对于方法的的重载,我在第一篇[Java之一]类与对象 中已经写过普通方法的部分。
其所有的方法重载的条件是一样的:
1.必须在同类中或者是有继承关系的类中;
2.方法名必须要完全一致;
3.方法所带的参数(参数个数、参数类型、参数顺序)必须要不同。
对于构成方法的重载和普通方法的格式一样,改变其参数,改变其方法内容
例如:
public J0710(){}public J0710(String name){ this.name= name; //就是重写,是有参的构成方法}public void study(){ System.out.println(name+"在学习");}public static void main(String [] args){J0710 j = new J0710("安东");j.study();J0710 j1 = new J0710();j1.study();
}
}
输出结果:
安东在学习
null在学习
那么我们来理解构成方法的重载是为了什么:由例子可以知道,我们为的是让我们对象实例化的时候,根据不同的对象我们来,给他赋予属于这个对象的参数和方法。
四.最后的小问题
我们注意到,其中在上面的一个例子中有一个情况:
“this. name = name;”这句代码表示了什么意思呢?
如果没有这句代码,我们的输出是什么?
public J0710(){}public J0710(String name){ this.name= name; //就是重写,是有参的构成方法}public void study(){ System.out.println(name+"在学习");}public static void main(String [] args){J0710 j = new J0710("安东");j.study();J0710 j1 = new J0710();j1.study();
}
}
输出结果:
null在学习
null在学习
也就是无法将类的属性赋予内容
看这句代码:
public J0710(String name){
name= name;
}
因为Java中有就近原则,name的和如他最近的name有关也就是
这个name,可是,这句代码name不是类的属性,也就是说,我们没有将我们的参数,传给我们的类的属性。那么我们对这个问题的解决方法是:
this.name = name;
这里的this就是指我们对象的的属性,他表示:
1.this表示当前调用方法的对象;.如果是a对象在调用方法,那么方法中this就表示a对象。
2..this类似于生活中”我”这个词的意思
还有:this的用法
调用构造方法的格式:this(参数值,…);
调用普通方法的格式:this.普通方法名(参数值,…);
值得注意的是:调用构造方法的:this(参数值,…);可以将方法移到拥有这个参数的另一个重写的构造方法中。
- 【JAVA之三】类与对象扩展.构造方法
- java 类与对象 4---构造方法
- 【Java】类与对象-构造方法
- java面向对象(三) 构造方法
- java学习之路 之 面向对象编程-面向对象特征之一(封装和隐藏)级类的成员之三(构造器、构造方法)
- Java中类与对象(二):构造方法
- java基础入门-对象与构造方法
- JAVA 构造方法与匿名对象
- JAVA面向对象之构造方法
- Java面向对象之二-构造方法
- Java - 类 - 对象 - 方法 - 构造器 - 面向对象程序设计三大特性
- Java - 类 - 对象 - 方法 - 构造器 - 面向对象程序设计三大特性
- PHP面向对象之构造方法与析构方法
- 对象与类及方法构造
- java的构造方法能不能与普通对象方法同名
- 对象和类之构造方法
- java基础-1-面向对象(1)-概念介绍与类、对象、构造方法
- 类和对象+构造方法(Java)
- 从数据库获取到json数据,前端用vue.js数据绑定
- c++实现顺序表
- RabbitMQ消息队列生产者和消费者
- StringBuffer
- F
- 【JAVA之三】类与对象扩展.构造方法
- “转载”目录说明
- 一个简单例子讲明mysql存储过程是什么
- 《Java设计模式之适配器模式》
- 组合Problem
- C++标准转换运算符const_cast
- npm换源
- Android视图绘制View相关概念基本总结
- Mongodb从0到1系列二:数据库与集合操作、文档增删改查