继承
知识框架:
继承的概述
继承是面向对象三大特征之一,封装之后形成了独立体,独立体A和独立体B之间可能存在继承关系。
继承时子类继承父类的特征和行为,使得子类对象具有父类的属性(子类继承父类的方法),让子类具有与父类相同的行为。但是子类也会具有自身的特性。
继承的特性:
- B 类继承A类,则称 A类为超类(superclass)、父类、基类,B 类则称为子类(subclass)、派生类、扩展类。
- java 中的继承只支持单继承,不支持多继承。C++中支持多继承。
- 虽然 java 中不支持多继承,但有时候会产生间接继承的效果,例如:class C extends B,class B extends A,也就是说,C 直接继承B,其实C 还间接继承A。
- java 中规定,子类继承父类,除构造方法和被private 修饰的数据不能继承外,剩下都可以继承。
- java 中的类没有显示的继承任何类,则默认继承Object 类,Object 类是java 语言提供的根类,(一个对象与生俱来就有Object 类型中所有的特征)。
- 继承也存在一些缺点,继承会导致代码的耦合度变高。
继承的优缺点
继承的优点:继承解决了代码复用的问题(代码复用就是代码的重复利用),这是继承机制最基本的作用。
有了继承之后才会衍生出方法的覆盖和多态机制。
继承的缺点:继承会使代码的耦合度变高。
继承的实现
Java中继承的语法格式:
class 类名 extends 父类名{
类体;
}
例如“银行账户类”和“信用账户类”
//银行账户类
public class Account {
//账号
private String actno;
//余额
private double balance;
//账号和余额的setter 和getter 方法
public String getActno() {
return actno;
}
public void setActno(String actno) {
this.actno = actno;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
//信用账户类继承银行账户
public class CreditAccount extends Account{ 类
//信誉度(特有属性)
private double credit;
//信誉度的setter 和getter 方法
public double getCredit() {
return credit;
}
public void setCredit(double credit) {
this.credit = credit;
}
}
public class AccountTest {
public static void main(String[] args) {
CreditAccount act = new CreditAccount();
act.setActno("111111111");
act.setBalance(9000.0);
System.out.println(act.getActno() + "信用账户,余额" + act.getBalance()
+ "元");
}
}
运行结果: