配色: 字号:
《Java面向对象程序设计》05 重载和构造方法写字字帖
2023-05-25 | 阅:  转:  |  分享 
  
目标理解方法重载的意义掌握成员方法的重载,构造方法的重载掌握this,static 关键字的作用概述多态性是面向对象程序设计的重要特性之一。
多态性分为两种:静态多态和动态多态。方法重载用于实现静态多态性本章主要讲解方法重载及其调用、构造方法的重载及其调用等 。然后讲解J
ava编程中经常使用的this和static关键字 方法重载(overload)对于类的方法,如果有两个方法的方法名相同,但参数不
一致,那么可以说,一个方法是另一个方法的重载方法方法重载规则:方法名相同方法的参数类型、个数至少有一项不相同方法的返回类型可以不相
同方法的修饰符可以不相同 方法重载(overload)方法重载的原则:只有对不同的数据完成基本相同的任务的方法才应重载重载的优点
是:不必对相同的操作使用不同的方法名有助于更轻松地理解和调试代码更易于维护代码 参数类型不同的重载java.lang.Math类的
max()方法的重载模型:public static int max (int a, int b)public static lo
ng max (long a, long b)public static float max (float a, float b)
public static double max (double a, double b)max()重载方法的调用Math.max
(1, 2) ; Math.max(1.0F, 2.0F) ; Math.max(1.0, 2) ;方法重载(overload)类
的同一种功能可能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数 例:杂技师能训练动物,对于不同的动物有不同的训练方式
public void train(Dog dog){ //训练小狗站立、排队、做算术 … } public void tra
in(Monkey monkey){ //训练小猴敬礼、翻筋斗、骑自行车 … }参数类型不同的重载方法重载的实现: 定义一个Acc
ount类,其中定义两个重载方法,分别求两个整数和两个浮点数的和class Account { public void sum(
int a, int b) { int result = a + b; System.out.println(re
sult); } public void sum(double a, double b){ double result
= a + b; System.out.println(result); }}public class AccountTe
st { public static void main(String[] args){ Account acc = ne
w Account(); acc.sum(10, 15); acc.sum(11.4, 20.5); }}参
数个数不同的重载对于方法调用中参数个数不同的情况也可以进行方法重载 public int sum(int a, int b) pu
blic int sum(int a, int b, int c)参数个数不同的重载方法重载的实现:修改Account类,其中定义
两个重载方法,分别求两个整数和三个整数的和class Account { public int sum(int a, int b
) { int result = a + b; return result; } public int s
um(int a, int b, int c){ int result = sum(a, b); result =
sum(result, c); return result; }}public class AccountTest {
public static void main(String[] args){ Account acc = new Acc
ount(); int result = acc.sum(10, 15); System.out.println("
两个数的和:" + result); result = acc.sum(10, 15, 20); System.o
ut.println("三个数的和:" + result); }}构造方法构造方法负责对象的初始化工作,为实例变量赋初始值构造方
法必须满足以下语法规则:方法名必须与类名相同不要声明返回类型当类中没有定义构造方法时将使用默认构造方法 重载构造方法当通过new
语句创建一个对象时,在不同的条件下,对象可能会有不同的初始化行为假设有一雇员类Employee,包含属性name 和age。当使用
new创建一个Employee的对象时可能出现以下几种情况:姓名和年龄都已知姓名已知,年龄未知姓名和年龄都未知 可以通过重载构造方
法来表达对象的多种初始化行为 重载构造方法Employee类重载构造方法的实现: class Employee { privat
e String name; private int age; public Employee(String n, int a
) { name = n; age= a; } public Employee(String n) { na
me = n; age = -1; } public Employee() { name = "无名氏";
age = -1; } ……}public class EmployeeTest { public static voi
d main(String[] args) { Employee zhangfei = new Employee(“张飞”,
25); Employee guanyu = new Employee(“关羽”); Employee someon
e = new Employee(); …… }}重载构造方法一个类可以有多个构造方法重载的构造方法可以以不同方式初始化类
对象要重载构造方法,我们应提供不同的参数列表(参数个数不同或者参数类型不同) 默认构造方法默认构造方法是没有参数的构造方法,可分为
两种:隐含的默认构造方法程序显式定义的默认构造方法默认构造方法如果用户定义的类中没有提供任何的构造方法,那么Java语言将自动提供
一个隐含的默认构造方法//隐含的默认构造方法public Employee() { }如果类中显式定义了一个或多个带参数构造方法,
那么这个类就失去默认构造方法。此时可以显式定义默认构造方法。this关键字当局部变量与实例变量同名时,局部变量将隐藏同名的实例变量
可以用关键字this来区分局部变量和实例变量 class Employee { private String name;
private int age; public Employee (String name, int age) {
this.name = name; this.age = age; }}this关键字在构造方法中使
用this关键字调用其他的重载构造方法class Employee { private String name; pr
ivate int age; public Employee (String name, int age) {
this.name = name; this.age = age; } public Employee
(String name) { this(name, -1); }}static关键字static关键字可以
用来修饰成员变量成员方法代码块 被static所修饰的成员变量和成员方法表明该成员归某个类所有,它不依赖于类的特定实例,被类的所有
实例所共享 static变量类的成员变量有两种:静态变量(类变量)实例变量 静态变量类似于其他语言中的全局变量//带有一个静态变量
的简单类class Sample { static int count = 0; //静态变量 public Sam
ple() { count ++; }}static变量可以通过类的实例来访问静态变量 Sample s1
= new Sample(); Sample s2 = new Sample(); System.out.println(
s1.count); System.out.println(s2.count);访问静态变量的更好方法是通过类名来实现 Syst
em.out.println( Sample.count ); Sample s1 = new Sample(); Sample
s2 = new Sample(); System.out.println( Sample.count ); static方
法类的成员方法可分为两种:静态方法(类方法)实例方法访问静态方法不需要创建类的实例,直接通过类名来访问public class S
ample1 { public static int method(int x, int y) {//静态方法
return x+y; }}public class Sample2 { public void met
hod2() { int x = Sample1. method(3, 6); //通过类名访问静态
方法 }}方法不需要创建类的实例,直接通过类名static方法静态方法可访问内容限制:不能使用this关键字不能直接访问所属
类的实例变量和实例方法可以直接访问所属类的静态变量和静态方法 static代码块静态代码块不存在任何方法体中类的静态代码块用于初始
化类,如:给类的静态变量赋初值public class Sample{ static int i; static{
//静态代码块 i = 5 ; }} 静态代码块中可访问内容的限制与静态方法相同总结重载方法是一组具有相同名称的方法,调用重载方法时将执行哪一个方法取决于调用时提供的参数类型和参数的个数。构造方法用于完成对象的初始化工作,当创建一个对象时将会调用构造方法。构造方法的重载为创建对象提供了多种方式,提高了编程的灵活性。this是一个引用,它始终指向当前对象本身。static所修饰的成员变量和成员方法表明该成员归某个类所有,它不依赖于类的特定实例,被类的所有实例所共享。static块用于执行类的初始化工作。
献花(0)
+1
(本文系大高老师首藏)