关于Java语言当中的继承
1、继承是面向对象三大特征之一,三大特征分别是:封装、继承、多态
2、继承基本的作用是:代码复用。但是继承最重要的作用是:有了继承才有了以后的方法的覆盖和多态机制。
3、继承的语法格式:
[修饰符列表] class 类名 extends 父类名 (){
类体 = 属性 + 方法
}
4、Java语言当中的继承只支持单继承 ,一个类不能同时继承很多类,只能继承一个类。(在C++中支持多继承)
5、关于继承中的一些术语:
B类继承A类,其中:
A类称为:父类、基类、超类、superclass
B类称为:子类、派生类、subclass
6、在Java语言当中子类继承父类都继承哪些数据?
- 私有的不支持继承
- 构造方法不支持继承
- 其他数据都支持继承
7、虽然Java语言只支持单继承,但一个类也可以间接继承其他类,例如:
C extends B{
}
B extends A{
}
A extends T{
}
C类直接继承B类,但C类间接继承A、T类。
8、Java语言中假设一个类没有显示地继承任何类,该类默认地继承Javase库当中提供的java.lang.Object类。Java语言中任何一个类都有Object类的特征。
public class ExtendsTest {
//查找类型快捷键:ctrl + shift + T
//查找资源快捷键:ctrl + shift + R
public static void main(String[] args) {
ExtendsTest et = new ExtendsTest();
String s = et.toString();
System.out.println(s);//inherit.ExtendsTest@1a1d6a08
}
}
上述代码中"toString()"验证了Java语言中任何一个类都有Object类的特征。
银行账户类
public class Account {
private String actnum;
private double balance;//余额
public Account() {
}
public Account(String actnum, double balance) {
this.actnum = actnum;
this.balance = balance;
}
public String getActnum() {
return actnum;
}
public void setActnum(String actnum) {
this.actnum = actnum;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
信用卡账户类
public class CreditAccount {
private String actnum;
private String balance;
private String credit;
public CreditAccount() {
}
public CreditAccount(String actnum, String balance, String credit) {
this.actnum = actnum;
this.balance = balance;
this.credit = credit;
}
public String getActnum() {
return actnum;
}
public void setActnum(String actnum) {
this.actnum = actnum;
}
public String getBalance() {
return balance;
}
public void setBalance(String balance) {
this.balance = balance;
}
public String getCredit() {
return credit;
}
public void setCredit(String credit) {
this.credit = credit;
}
}
观察两种类,其中有很多重复的地方
private String actnum;
private String balance;
public String getActnum() {
return actnum;
}
public void setActnum(String actnum) {
this.actnum = actnum;
}
public String getBalance() {
return balance;
}
public void setBalance(String balance) {
this.balance = balance;
}
上述这些为相同重复部分
改进:extends 继承
public class CreditAccount extends Account{
private String credit;
public CreditAccount() {
}
public String getCredit() {
return credit;
}
public void setCredit(String credit) {
this.credit = credit;
}
}
实践发现,可以调用,继承成功。
public class ExtendsTest02 {
public static void main(String[] args) {
C c = new C();
c.doSome();
}
}
class A{
public void doSome () {
System.out.println("do some!");
}
}
class B extends A{
}
class C extends B{
}
上述中c.doSome调用的doSome方法是从B类中继承过来的。