# Om Arv
__
author: krm
created: 2023-02-10
status: alpha
category: oo
index: 2
__

# 1. Vad innebär att en klass A ärver från en annan klass B?

- ✅ Att medlemar deklarerade i B också finns i A.
- Att metoder och fält deklarerade i A också finns i B.
- Att A skapas helt automatiskt ifrån B.
- Att A+B är definerad.

# 2. Vad innebär multipelt arv?

- Att en klass endast kan ärvas ifrån en annan klass.
- Anledningen till java är ett dåligt språk.
- Att flera olika klasser kan ärva ifrån samma klass.
- ✅ Att en klass kan ha ärvt ifrån flera olika klasser.

# 3. Ge ett exempel på ett språk som har multipelt arv.

- ✅ C++
- Java
- C#
- js

# 4. Vad är ett "interface" js?

- Ett fält som har ärvs i från en annan klass.
- ✅ Ett kontrakt som en klass eller ett object lovar att uppfylla.
- En tom klass.
- En basklass.

# 5. Om en klass A ärver från en klass B och klass B ärver från en klass C. För ett objekt som skapas från A, vad gäller för dess medlemar?

- ✅ A har medlemar från A, B och C.
- A har medlemar från B
- A har medlemar från C
- A har inte 	medlemar från sig självt.
- A har inga medlemar.

# 6. Vad är värdet av uttrycket "aa.a"?

```js
class C {
  a = 0
  b = NaN
  c = 3
}

class B extends C {
  b = 5;
}

class A extends B {
  a = 3;
}


const aa = new A();
const bb = new B();
const cc = new C();
```

- 0
- 1
- ✅ 3
- 8
- 9
- 10
- 11
- NaN

# 7. Vad är värdet av uttrycket "aa.b+aa.c"?

```js
class C {
  a = 0
  b = NaN
  c = 3
}

class B extends C {
  b = 5;
}

class A extends B {
  a = 3;
}


const aa = new A();
const bb = new B();
const cc = new C();
```

- 0
- 1
- 3
- ✅ 8
- 9
- 10
- 11
- NaN


## 8. Vad är värdet av uttrycket "bb.a+cc.b"?

```js
class C {
  a = 0
  b = NaN
  c = 3
}

class B extends C {
  b = 5;
}

class A extends B {
  a = 3;
}


const aa = new A();
const bb = new B();
const cc = new C();
```

- 0
- 1
- 3
- 8
- 9
- 10
- 11
- ✅ NaN

## 9. Vad är värdet av uttrycket "cc.a+cc.c+aa.a+bb.b"?

```js
class C {
  a = 0
  b = NaN
  c = 3
}

class B extends C {
  b = 5;
}

class A extends B {
  a = 3;
}


const aa = new A();
const bb = new B();
const cc = new C();
```

- 0
- 1
- 3
- 8
- 9
- 10
- ✅ 11
- NaN
