一、继承
1、继承是面向对象三大特征之一,三大特征分别是:封装、继承、多态
2、继承"基本"的作用是:代码复用,但是继承最重要的作用是:有了继承才有了"方法的覆盖"和"多态机制"
3、继承语法格式:
[修饰符列表] class 类名 extends 父类名{
类体 = 属性 + 方法
}
4、java语言当中的继承只支持单继承,一个类不能同时继承很多类,只能继承一个类
5、关于继承中的一些术语:
B类继承A类,其中:
A类称为:父类、基类、superclass
B类称为:子类、派生类、subclass
6、在java语言当中子类继承父类都继承哪些数据呢?
1)私有的不支持继承
2)构造方法不支持继承
3)其他数据都可以被继承
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 Account {
private String account;
private double balance;
public Account() {
}
public Account(String account, double balance) {
this.account = account;
this.balance = balance;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
public class CreditAccount extends Account{
private double credit_degree;
public CreditAccount() {
}
public double getCredit_degree() {
return credit_degree;
}
public void setCredit_degree(double credit_degree) {
this.credit_degree = credit_degree;
}
}
public class InheritTest {
public static void main(String[] args) {
InheritTest it = new InheritTest();
String s = it.toString();//此处可以调用toString方法,InheritTest类中有toString方法,从Object类中继承过来的
System.out.println(s);//Test.InheritTest@3b6eb2ec
CreditAccount credit = new CreditAccount();
credit.setAccount("1234");
credit.setBalance(2346.6);
credit.setCredit_degree(10000);
System.out.println(credit.getAccount()+","+credit.getBalance()+","+credit.getCredit_degree());
}
}
二、方法的覆盖
方法的重载
1、方法重载又称为overload
2、什么时候使用方法重载?
当在同一个类当中,方法完成的功能是相似的,建议方法名相同,这样方便程序员的编程,
就像在调用一个方法似的,代码美观。
3、构成方法重载的条件:
1)在同一个类当中
2)方法名相同
3)参数列表不同:类型、顺序、个数
4、方法重载和什么无关?
1)和方法的返回值类型无关
2)和方法的修饰符列表无关
方法的覆盖:
1、方法覆盖又被称为方法重写,英语单词:override/overwrite
2、什么时候使用方法重写?
当父类中的方法已经无法满足当前子类的任务需求,
子类有必要将父类中继承过来的方法进行重新编写,
这个重新编写的过程称为方法重写/方法覆盖。
3、什么条件满足之后方法会发生重写呢?【代码满足什么条件之后,就构成方法的覆盖呢?】
1)方法重写发生在具有继承关系的父子类之间
2)方法重写的时候:返回值类型相同,方法名相同,形参列表相同
3)方法重写的时候:访问权限不能更低,可以更高
4)方法重写的时候:抛出异常不能更多,可以更少
4、注意:
私有方法不能继承,所以不能覆盖
构造方法不能继承,所以不能覆盖
静态方法不存在覆盖
覆盖只针对方法,不谈属性