面向对象---1

面向对象内容的三条主线:
1.Java类及类的成员
成员变量(属性)、方法(函数)、构造器(或构造方法)
代码块(或初始化块)、内部类
2.面向对象的三大特征
封装性、继承性、多态性、(抽象性)
3.其它关键字
this、super、abstract、interface、package、import


面向对象的最基本的两个要素:类和对象 (实例:instance)

类:对一类事物的描述、抽象的、概念上的定义。
对象:由类所派生出来的,真实存在的一个结构、实例。
比如: Scanner scan = new Scanner(System.in);

我们更多的关注于类的设计!!!
属性:对应类中的成员变量
行为:对应类中的成员方法
Field=属性=成员变量=(域)=(字段),Method=(成员)方法=函数

针对变量值的说明:
成员变量有默认初始化值,与之前数组中一样。
局部变量没有默认初始化值,在调用之前,必须显式初始化。

两者在内存中加载的位置不同。
局部变量,声明在栈空间中
成员变量,声明在堆空间中。

1.方法声明的格式:
权限修饰符 返回值类型 方法名(参数列表){
方法体;
}
说明:定义方法时,都要考虑以上方法声明的五部分结构。
2.细节说明:
》权限修饰符:指明所修饰的结构可被调用的范围大小。技巧:暂时声明方法时都可以用public修饰。
》返回值类型:具体的数据类型 或 void(没有返回值)
根据实际需要来决定方法是否需要返回值,返回则指明返回值对应的类型,不需要则void。
如果指明了返回值类型,必须在代码执行最后,指明返回值
一旦执行到return,则结束此方法。return后面不可再有代码,有的话会出现Unreachable code。
void方法,可以添加return,但是return后面什么也不用跟。
》方法名,属于标识符,声明时满足标识符的命名规则和规范,要见名知意。
》参数列表:可以根据需要,声明方法时,提供参数列表,如果需要多个变量名时,用逗号隔开。数据类型 参数名。
》方法体:真正体系方法功能的部分。

匿名对象的使用:
》因为匿名对象在创建以后,没有显式的赋予变量名,所以再次滴哦用不可能,只能调用一次。

方法的使用(补充)
》方法内可以调用当前类的属性
》方法内可以调用当前类的方法
》特别的,方法1内调用方法1:递归算法
》方法内不能定义方法

方法的重载:(overload)
在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。
重载的特点:
与返回值类型无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。
重载实例:
//返回两个整数的和
int add(int x,int y){return x+y;}
//返回三个整数的和
int add(int x,int y,int z){return x+y+z;}
//返回两个小数的和
double add(double x,double y){return x+y;}

方法的重载:
两同一不同:同一个类中,相同方法名,参数列表不同
参数列表不同:参数个数不同,参数类型不同,与参数名没有关系。

方法之间是否构成重载,与返回值无关,与权限修饰符无关。
不允许在同一个类中定义相同的方法,系统会把同一个类中,相同方法名,相同参数列表的方法识别为同一种方法。

系统通过方法名和参数列表来确定调用的方法是哪一个。

新特性,可变个数参数的方法:
1.可变个数参数的个数:数据类型 ... 变量名
2.当调用可变个数参数的方法时,可变个数参数进行赋值时,可以赋值的变量个数为0个、1个、或者多个。
3.可变个数参数的方法与同一个类中的其他同名的方法之间构成重载。
4.可变参数方法不能与参数列表以同类型数组定义的方法同时存在于同一个类中。
5.如果方法的参数列表中存在可变参数个数的参数类型,可变个数参数只能放在最后。
6.推论:一个方法中的参数列表中最多只能有一个可变个数的参数。

原文地址:https://www.cnblogs.com/1185937986-jili/p/12828304.html