1.继承extends
//使用继承机制来解决代码复用问题
public class ExtendsTest02{
public static void main(String[] args){
//普通账户
Account act = new Account();
act.setActno("11111");
act.setBalance(100000);
System.out.println(act.getActno()+"余额"+act.getBalance());
//创建信用账户
CreditAccount ca = new CreditAccount();
ca.setActno("22222");
ca.setBalance(-10000);
ca.setCredit(0.99);
System.out.println(ca.getActno() + "余额" + ca.getBalance() + ",信誉度" + ca.getCredit());
}
}
//银行账户类
//账户的属性:账号,余额
class Account{//父类
private String actno;
private double balance;
//构造方法
public Account(){
}
public Account(String actno,double balance){
this.actno =actno;
this.balance = balance;
}
//setter and getter 方法
public void setActno(String actno){
this.actno = actno;
}
public String getActno(){
return actno;
}
public void setBalance(double balance){
this.balance = balance;
}
public double getBalance(){
return balance;
}
}
//其他类型的账户:信用卡账户
//账户、余额、信誉度
class CreditAccount extends Account{//子类
private double credit;
//构造方法
public CreditAccount(){
}
public void doSome(){
//错误:actno 在Account中是 private 访问控制的
System.out.println(actno);
//间接访问
System.out.println(this.getActno());
}
//setter and getter方法
public void setCredit(double credit){
this.credit = credit;
}
public double getCredit(){
return credit;
}
}
1.1 什么是继承,有什么作用?
继承:在现实世界当中也是存在的,例如:父类很有钱,儿子不用努力也很有钱.
继承的作用:
- 基本作用:子类继承父类,代码可以得到复用.(这个不是重要的作用,是基本作用)
- 主要作用:因为有了继承机制,才有了后期的方法覆盖和多态机制.
1.2继承的相关特性?
-
B类继承A类,则A类可以称为超类,父类,基类,
B类称为子类,扩展类,派生类class A{} class B extends A()
-
java中的继承只支持单继承,不支持多继承,C++支持多继承
class X{ } class Y extends X{ } class M extends X{ } //其实这也说明了z是直接继承X和Y的 //这样描述:z直接继承了Y,Y间接继承了X class Z extends Y{ }
-
虽然,java中不支持多继承,但是有时候会产生间接继承的效果.例如:class Z extends Y,class Y extends X,也就是说z直接继承了Y,Y间接继承了X,X继承了object
-
java中规定,子类继承父类,除构造方法不能继承外,剩下的都可以继承.但是私有的属性无法在子类中直接访问。(父类中private修饰的不能在子类中直接访问,可以通过间接的手段来访问)
不能直接ca.actno;可以ca.getActno(); -
java中的类没有显示的继承任何类,则默认继承Object类,Object类是java语言提供的根类(老祖宗),也就是说,一个对象与生俱来就有所有的特征
(object是所有类的超类) -
继承也存在一些缺点,耦合度高,父类修改子类受到牵连.
1.1子类继承父类,能使用子类对象调用父类方法吗?
可以,因为继承后,父类方法也属于子类了
1.2