文章目录
1、构造函数
构造函数名必须与类名相同。
public 构造方法名(){
}
1.1、构造函数重载(多态)
1、构造函数重载是指编写多个不同参数的构造函数。构造函数重载是为了实现构造函数的重用,重载是java多态性的一种表现。
2、方法重载有如下规则:
A:方法名相同;
B:方法参数不同(类型、顺序、数量);
示例:构造函数名称相同,传递的参数值不同,调用不同
1、public 构造方法名(){
}
public Student() {
System.out.println("--------无构造函数-----------");
}
/**
* 有参构造函数
*/
public Student(long id,String name){
this.id = id;
this.name = name;
}
2、方法重载(多态)
方法签名:方法的标识关键字。
方法签名=方法名称+参数类型列表;
Java 类中不能存在具有相同方法签名的方法;
方法重载:方法名相同但方法签名不同的方法,重载实现函数式多态性,重载的方法经常相互重用。
例子:同一个方法名,调用不同的参数,调用不同的方法
public int add(int a,int b){
return a+b;
}
public float add(float a,float b){
return a+b;
}.
public float add(float a,int b){
return a+b;
}
2.1、方法参数传递(带参数的方法)
Java方法中传参只有一种方式:传值
基本类型是其值的副本;
解决方法:基本类型给出的值就是它的值。
引用类型是引用值(地址)的副本;
解决方法:将传入的值加上引用类型给定的值
例子:int a,int b 是传入的参数
public int add(int a,int b){
return a+b;
}
3、方法调用
java类主要包含:属性和方法。
方法:将真实事物的动态属性抽象为java对象的方法。每种方法都包含不同的功能。但是在java项目中,往往需要多个函数组合使用方法,可能会出现方法之间的调用。
3.1、调用方式 1、直接调用;
2、对象调用;
3、类名调用; 3.1.1、直接调用
要求:被调用的方法必须与当前方法在同一个类中
格式:方法名();
注意:修改后的方法只能调用修改后的变量和方法
例子:
publicvoid t1() {
System.out.println("this is 方法调用一.t1()........");
}
publicvoid t2() {
t1();//直接调用t1();
System.out.println("this is 方法调用一.t2()........");
}
3.1.2、对象调用
要求:在调用对象的方法之前必须已经创建了对应的对象【属性和方法属于对象】
格式:.();
例子:
publicvoid t1() {
//创建相应的对象
方法调用二 f=new 方法调用二();
//使用对象调用
f.t2();
System.out.println("这是对象调用t1()..........");
}
publicvoid t2() {
System.out.println("这是对象调用t2()...........");
}
3.1.3、类名调用
要求:被调用的方法必须经过修饰
格式:.();
思考:修改方法后,该方法将不再属于对象方法,而是属于公众。
注意:修改后的方法可以使用类名调用,也可以直接由对象调用。建议使用类名调用。
例子:
publicvoid t1() {
方法调用三.t2();//类名调用
t2();//直接调用
方法调用三 f=new 方法调用三();
f.t2();//对象调用
System.out.println("这是t1......");
}
publicstaticvoid t2() {
System.out.println("这是t2......");
}
4、关键字 this([参数值, 参数值,…]) this 表示类名。类名()==this();
this.
this 表示对对象的引用
this表示类名,用于解析构造函数调用。
格式:this([参数,参数,…])
要求:
1、this([, , ...]) 只能写在构造函数中,不能写在普通函数中。
2、this([, ,...]) 必须是方法主体中有效代码的第一行。 java系统不允许构造函数之间直接/间接调用形成无限循环。通常作为构造函数相互调用的出口。
例子:
publicclass Demo {
public Demo() {
//Demo(20);直接调用
this(20);//必须编写在有效代码第一行;
System.out.println("demo()........无....");
}
public Demo(int a) {
//this();//this() 等价于 Demo();
System.out.println("demo(int a)........有....");
}
}
4.1、这个属性
功能:
1.解决全局变量和局部变量的名称冲突。处理了就近原则后,就不能使用全局变量的问题了。
2.解决全局变量和参数名冲突。处理了就近原则后,就不能使用全局变量的问题了。
publicclass this关键字二 {
int a=25;//全局变量相当于属性
public void show() {
int a=50;//局部变量
//当全局变量和局部变量命名冲突后,java程序按照"就近原则"处理
System.out.println("a的值为:"+a);//50
//this关键字二 t=new this关键字二();
//操作对象的属性:对象名.属性名;
//System.out.println("a的值为:"+t.a);
System.out.println("a的值为:"+this.a);
}
//封装
public void sum(int a) {//参数的编写实质为局部变量
//编写一个局部变量测试
//int a=10;//java程序中同一作用域不能声明相同变量名的变量
//当全局变量和参数命名冲突后,java程序按照"就近原则"处理
System.out.println("a的值为:"+a);
System.out.println("a的值为:"+this.a);
}
public static void main(String[] args) {
this关键字二 t=new this关键字二();
t.show();
t.sum(99);//必须按照参数...传递值
}
}