1、方法的结构
2、方法的权限修饰符
public:公有的
protected:类内,包内和子类
default:默认权限修饰符,包私有(意思就是只能由跟这个类在同一个包中的类来访问),类内,包内
private:同一类内
final:被修饰后方法不能被重写
方法除了属性的访问修饰符之外还有static abstract:
static:静态方法 ,可以直接使用类名来调用
abstract:抽象方法,不需要有具体的实现,继承这个抽象类的子类必须重写这个方法
3、方法的重载(一个类中定义多个同名的方法,参数列表不同)
重载时,方法的参数列表不同:参数的个数、数据类型,前提是方法的名字相同,是否重载与返回值无关,因为在调用方法的时候并不能确定被调用的方法的返回值的类型,因此,通过返回值的类型是不能区分出两个方法的,但是从参数列表可以实现对同名的方法的区分
好处:同一方法可以实现多种功能
4、构造方法
(1)定义:方法名与类名相同,无返回值,但是不能加void。
package 构造方法;
public class Circle extends Shape{
private double radius;
private double pi=3.1415926;
public Circle(){
}
public Circle(double radius){ this.radius = radius; } public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } public double getArea(){ return radius*radius*pi; } public double getLength() { return 2*pi*radius; } }
(2)默认的构造方法(没有参数的构造方法)
类中必定有构造方法,若不写,系统自动添加无参构造方法。
public Circle(){
}
如果再类中无构造方法,则调用无参的构造方法。
(3)一个构造方法调用另一个构造方法(this)
1 public class ConstructionMethodDemo {
2 public static float radius;
3 private double pi = Math.PI;
4
5 public ConstructionMethodDemo(float radius) {
6 this.radius = radius;
7 } 8 9 public ConstructionMethodDemo() { 10 this(radius); 11 System.out.println("圆的面积为:" + radius * radius * pi); 12 } 13 14 public static void main(String[] args) { 15 ConstructionMethodDemo ccm = new ConstructionMethodDemo(2); 16 ConstructionMethodDemo ccm1 = new ConstructionMethodDemo(); 17 } 18 }
在用this()调用构造方法的时候必须放到构造方法的第一行,目的是避免操作对象的时候对象还未创建成功。
(4)构造方法的作用:完成对象的初始化(构造一个实例、对实例的初始化)
为了说明构造方法的作用,这里先创建一个有三个属性的学生类,含有两个构造方法,一个有参数,一个无参数:
public class Student {
private String snum;
private String sname;
private String sex;
public Student(String snum, String sname, String sex) {
System.out.println("有参数的构造方法被调用了!!");
this.snum = snum;
this.sname = sname;
this.sex = sex;
}
public Student(){
System.out.println("无参的构造方法被调用了!!");
}
public String getSnum() {
return snum;
}
public void setSnum(String snum) {
this.snum = snum;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Student{" +
"snum='" + snum + '\'' +
", sname='" + sname + '\'' +
", sex='" + sex + '\'' +
'}';
}
}
创建测试类:分别调用有参和无参两种构造方法来创建对象:
public class Test {
public static void main(String[] args){
Student student=new Student();
student.setSnum("123201011");
System.out.println(student);
Student student1=new Student("123202002","zhai","nv");
System.out.println(student1);
}
}
可以看出,有参数的构造方法存在一定的优势,就是在创建对象的同时完成了对象的初始化工作,而调用无参的构造方法方式创建对象后,还需要利用Student类的set方法为对象赋值。