JavaTutorials之Classes and Objects

  • Class

Declaring Classes
范例

class MyClass extends MySuperClass implements YourInterface {
    // field, constructor, and
    // method declarations
}

在这里插入图片描述
1.可以用public,private等修饰
2.继承extends
3.实现implements
Declaring Member Variables

public int cadence;
public int gear;
public int speed;

在这里插入图片描述
1.权限修饰符
2.类型
3.名字

Defining Methods

public double calculateAnswer(double wingSpan, int numberOfEngines,
                              double length, double grossTons) {
    //do the calculation here
}

在这里插入图片描述
1.权限修饰符。
2.返回值类型
3.方法名称
4.参数列表
5.异常列表
6.方法体:代码,局部变量。

public class DataArtist {
    ...
    public void draw(String s) {
        ...
    }
    public void draw(int i) {
        ...
    }
    public void draw(double f) {
        ...
    }
    public void draw(int i, double f) {
        ...
    }
}

在这里插入图片描述
JAVA通过方法名+参数类型,个数唯一确定一个方法。

Providing Constructors for Your Classes

public Bicycle(int startCadence, int startSpeed, int startGear) {
    gear = startGear;
    cadence = startCadence;
    speed = startSpeed;
}

构造器:名字和类名相同且没有返回值。
在这里插入图片描述
new 调用了构造函数

new Bicycle(30, 0, 8)

在内存中创造了对象并初始化fields
在这里插入图片描述
也可以有无参构造函数。

在这里插入图片描述
你不一定要提供构造函数,编译器去找父类的无参构造函数,如果你没有显示的指定你的父类,所有的类都有一个父类Object。
在这里插入图片描述
构造器就是来构造对象的,如果不能调用某个类的构造函数则不能直接创造该类的对象(言外之意可以间接创造)。

Passing Information to a Method or a Constructor

public double computePayment(
                  double loanAmt,
                  double rate,
                  double futureValue,
                  int numPeriods) {
    double interest = rate / 100.0;
    double partial1 = Math.pow((1 + interest), 
                    - numPeriods);
    double denominator = (1 - partial1) / interest;
    double answer = (-loanAmt / denominator)
                    - ((futureValue * partial1) / denominator);
    return answer;
}

在这里插入图片描述
参数就是方法声明的时候变量列表,Argument是实际传进来的值。

Parameter Names

在这里插入图片描述
参数名在它的作用域内必须唯一,不能和本地变量名一样。

public class Circle {
    private int x, y, radius;
    public void setOrigin(int x, int y) {
        this.x=x;
    }
}

参数和类的成员一样,用this.访问。

Passing Primitive Data Type Arguments
在这里插入图片描述
原始参数给方法传的时候传的是value。我把我的值给你,你改不改变和我没什么关系。

public class PassPrimitiveByValue {

    public static void main(String[] args) {
           
        int x = 3;
           
        // invoke passMethod() with 
        // x as argument
        passMethod(x);
           
        // print x to see if its 
        // value has changed
        System.out.println("After invoking passMethod, x = " + x);
           
    }
        
    // change parameter in passMethod()
    public static void passMethod(int p) {
        p = 10;
    }
}

在这里插入图片描述
Passing Reference Data Type Arguments
在这里插入图片描述
引用数据类型,比如object,也是传value的,当这个方法返回的时候,引用的还是之前就引用的,只是值可以被改变如果访问等级合适的话。

public void moveCircle(Circle circle, int deltaX, int deltaY) {
    // code to move origin of circle to x+deltaX, y+deltaY
    circle.setX(circle.getX() + deltaX);
    circle.setY(circle.getY() + deltaY);
        
    // code to assign a new reference to circle
    circle = new Circle(0, 0);
}

在这里插入图片描述
circle一开始指向myCircle,方法改变了myCircle的坐标值,这个改变是永久的。circle指向的对象已经更改,但是原来的mycircle指向的对象没有改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值