JAVA方法的调用
一、 方法是什么?类是什么?对象是什么?静态又是什么?
挖坑
填坑
有些关于概念的专业表述还是需要了解透彻的:
类是构造对象的模板或蓝图。 由类构造对象的过程称为创建类的实例。
封装,(更形象地说)又称数据隐藏。封装将数据和行为组合在一个包中,并对对象的使用者隐藏了数据的实现方式。 对象中的数据称为实例域,操纵数据的过程称为方法。 每个类实例(即对象)的实例域值的集合称作这个对象的当前状态。
实现封装的关键在于:不能让类中的方法直接地访问其他类的实例域。程序仅通过对象的方法与对象数据进行交互。
封装给对象赋予了类似“黑盒”的特性,这是提高重用性和可靠性的关键。 在Java中,所有的类都源自于一个“超类”——Object。
通过拓展一个类来建立另一个类的过程称为继承(inheritance)。在拓展一个已有的类的时候,这个拓展后的新类具有所拓展的类的全部属性和方法(当然还有适用于这个新类的新数据域和新方法)。
对于只学习过面向过程程序设计(POP)——C语言就是一门典型的面向过程程序语言——的人而言,刚接触面向对象程序设计(OOP)时需要清楚对象的三个主要特性:
- 对象的行为——可以对对象施加哪些操作/方法?
- 对象的状态——当对对象施加方法时,对象如何响应?
- 对象标识——如何辨别具有相同行为和状态的不同对象?
对于同一个类的所有对象实例,它们都支持相同的行为,具有相似性。对象的行为是由可调用的方法定义的。
每个对象都保存着描述当前特征的信息,即对象的状态。对象状态的改变必须经方法的调用才能实现,并不会自发进行(当然了,除非封装性遭到了破坏)。
每个对象的状态常常存在差异,对象们的标识则永远是不同的。
二、静态方法调用其他方法
1.静态方法调用非静态方法
- 无论是否在同一类中,都需要通过对象调用
public class TestScanner {
public static void main(String[] args){
Son son1 = new Son();
son1.print9By9();
//静态方法main调用不同类非静态方法print9By9
TestScanner son2 = new TestScanner() ;
son2.printNineByNine();
//静态方法main调用同类非静态方法print9By9
}
void printNineByNine(){ //同类非静态方法:打印9x9乘法表
int j;
for(int i = 1;i < 10;i++){
j = 1;
for(int k = 0;k < i;k++){
System.out.print(i+"*"+j+"="+i*j+"\t");
j++;
}
System.out.println();
}
}
}
public class Son {
public void print9By9(){ //不同类非静态方法:打印9x9乘法表
int j;
for(int i = 1;i < 10;i++){
j = 1;
for(int k = 0;k < i;k++){
System.out.print(i+"*"+j+"="+i*j+"\t");
j++;
}
System.out.println();
}
}
}
2.静态方法调用静态方法
- 同一类中直接调用
- 不同类通过
类名.方法名
进行调用
public class TestScanner {
public static void main(String[] args){
printNineByNine();
//静态方法main调用同类静态方法printNineByNine
Son.print9By9();
//静态方法main调用不同类静态方法print9By9
}
static void printNineByNine(){ //同类静态方法:打印9x9乘法表
int j;
for(int i = 1;i < 10;i++){
j = 1;
for(int k = 0;k < i;k++){
System.out.print(i+"*"+j+"="+i*j+"\t");
j++;
}
System.out.println();
}
}
}
public class Son {
public static void print9By9(){ //不同类静态方法:打印9x9乘法表
int j;
for(int i = 1;i < 10;i++){
j = 1;
for(int k = 0;k < i;k++){
System.out.print(i+"*"+j+"="+i*j+"\t");
j++;
}
System.out.println();
}
}
}
三、非静态方法调用其他方法
1.非静态方法调用同一类方法
- 直接调用
代码:略
2.非静态方法调用不同一类方法
- 调用静态方法:通过对象调用(建议通过类名调用)
- 调用非静态方法:通过对象调用
代码:略