Java面向对象

面向对象具有封装、继承、多态的特性。

封装:public属性的是可以给其它对象访问,private就不行,当然,还有protect和没有修饰符的变量和方法,它们的详细情况如下表:

modifierclasspackagesubclassworld
publicYYYY
protectYYYN
no modifierYYNN
privateYNNN

The official tutorial

继承:子类继承父类。比如自行车继承了车的属性,相比车,自行车多了一些自己的属性

多态:有着相同的方法名称,但是方法的实现不同。

Class declarations

[public, private, protected, no_modifier] class <classname> [extends <baseclassname>] [implements <classname,classname,...>]{
    /*variable and method declarations*/
}

Class variables

public class BankAccount {
    // Class variable 
    public static int nextID = 100;
    // Instance variables 
    private double balance; 
    private int id;
    // Constant value 
    private final int PREFERENCE_CLIENT_LIMIT = 10000;

notice: static variables are initialised at their point of declaration, but a class may also have a special static initialisation block.

for example:

static { 
    nextID = 0;
}

Method definitions

default-constructor Method

构造函数是创建对象的时候自动调用的,用于初始化对象的变量。

Example

public BankAccount() { this(0.0) ; }
public BankAccount( double initBal ) { balance = initBal; id = newID(); }

注意:

  • 构造函数的名字必须和类名相同
  • 没有返回类型

    拷贝构造函数

  • Java不支持像C++中那样的复制构造函数,这个不同点是因为如果不自己写构造函数的情况下,Java不会创建默认的复制构造函数。

  • 构造函数只能进行浅copy,就是只能复制简单类型如int,float数据到另一副本。
    如果对象中包含了对象等复杂类型,浅拷贝对象其实是对象的引用,而不是重新生成一个新副本。这时,如果对一个实例的内部类类型修改,其他实例的内部类类型也会被修改。这时就需要copy构造函数来进行深复制(也就是使对象中包含的类等复杂类型使用值赋值,而不是引用赋值)。

    other-type method

其他类型的函数(即除了构造函数外)则需要返回类型。

Example

public double balance() { return balance; }
public int id() { return id; }
public void withdraw(double amt) { balance -=amt; }
public void deposit(double amt) { balance +=amt; }
public String toString() { return super.toString() + "(id:" + id + ", bal:" + balance + ")" ; }

new 操作符

new操作符的结果就是产生一个新建对象的引用

在Java中,所有的对象都位于全局内存,这就意味着我们不用担心栈溢出。

Example: Object creation and referencing (compiled).

public class ObjCreationExample { 
    public ObjCreationExample firstObject, secondObject;
    public static void main(String args[]) { 
        ObjCreationExample object1 = new ObjCreationExample(); 
        ObjCreationExample object2 = new ObjCreationExample(); 
        ObjCreationExample object3 = new ObjCreationExample(); 
        ObjCreationExample object4 = new ObjCreationExample();
        ObjCreationExample object5 = new ObjCreationExample(); 
        ObjCreationExample object6 = new ObjCreationExample(); 
        object1.firstObject = object3;
        object1.secondObject = object5; object2.firstObject = object4; 
}

引用的具体情况如下图:

pic

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值