java方法(基础系列8)

微信公众号:浅谈Java基础
关注可了解更多的编程知识,获取更多资源;
加入一起努力吧[1]
面向对象的三大特征:封装、继承、和多态。

java封装(下一篇会细讲)

对于封装,java提供了public、protected、private三种访问控制修饰符实现了良好的封装。这些修饰符是置于类或类中的成员之前的,下面这个表格是对于四中访问控制符作用效果的描述,先了解一下,下一篇文章细讲这四个之间的区别。

这里写图片描述

了解java方法

这篇文章讲一下java中的方法,在c语言中,有函数,那么在java中叫方法,叫的名字不同而已。

在java中,方法是类或对象的行为特征抽象,它是很重要的组成部分,java中所有的方法要么属于类,要么属于对象,不能独立存在,我们定义方法的时候,只能把方法定义在类体内,不能独立的定义一个方法,方法什么时候属于类呢?在方法使用static关键字的时候,这个方法就属于类,否则就属于这个类的实例,也就是对象。

public class Method {

    public static void ff({
        System.out.println("该方法属于类");
    }

    public void mm({
        System.out.println("该方法属于对象");
    }

}

在方法声明时如果包含了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时实际传递给形参的参数值也被称为实参。Java里方法的参数传递方式只有一种:值传递。所谓的值传递就是将实际参数值的副本(复制品)传入方法内,而参数本身不会受任何影响。
下面这个例子很清楚的解释了上面这段话,方法getSum()中的a,b为形参,main方法中a,b称为实参,给getSum()方法传值,传的是他们的副本,所以main里面输出的a的值不变

public class Test {
    public void getSum(int a,int b){
        a = a+b;
        System.out.println("参数a的值改变为:"+a); //10
    }
    public static void main(String[] args{
        int a = 5;
        int b = 5;
        Test test = new Test();
        test.getSum(a, b);
        System.out.println(a);//5   
}
}

基本数据类型、引用数据类型为参数时的传递,传递的同样是实际值的副本,但要注意的是引用数据类型的值存放的是地址值,即指向实际对象的那个地址值。所以调用方法时将地址值传递给了方法,方法操作时根据地址值找到了具体的对象,将具体对象的信息发生了变化。

Student类:
public class Student {
    protected String name = "zhangsan";
}
Test类:
public class Test {
    private static void changeValue(Student st){
        st.name = "李四";
    }
    public static void main(String[] args{
        Student st = new Student();
        System.out.println(st.name); //zhangsan
        Test.changeValue(st);
        System.out.println(st.name); //李四
    }
}

构造器

构造器是一个特殊的方法,这个特殊方法用于创建实例时执行初始化。构造器是创建对象的重要途径,因此Java类必须包含一个或一个以上的构造器。

构造器最大的用处就是在创建对象时执行初始化,所谓的初始化就是创建对象时,系统对这个对象的Field进行赋值处理。

public class Person {
    private String name = null;
    private int age = 0;
    Person(String name,int age){//有参构造器
        this.name = name;
        this.age = age;
    }
    public String getName(){
        return this.name;
    }
    public void setName(String name){
        this.name = name;
    }
    public int getAge(){
        return this.age;
    }
    public void setAge(int age){
        this.age = age;
    }
    public static void main(String[] args{
        Person p1 = new Person("张三",35);
        System.out.println(p1.getName());
        System.out.println(p1.getAge());
    }
}

注意:如果程序员提供了自定义的构造器,系统就不再提供默认的构造器,在上例的Person类中提供了构造器因此不能再通过new Person()代码来创建实例,因为该类不再包含无参数的构造器。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_41177827/article/details/81429792
今日推荐