目录
查个题外话;
面向对象的三大特性:封装,继承和多态
封装优点:(1)隐藏信息(2)减少耦合(3)内部结构可以自由修改
继承优点:代码复用
1.继承
super()作用:子类在继承父类时,可能会出现变量隐藏(子类成员变量与父类同名),方法覆盖(子类的防范与父类同名,方法的返回值类型,入口参数数目,类型,顺序均相同)
(1)用来访问父类中被覆盖的方法
(2)访问父类中被隐藏的成员变量
(3)调用父类的构造方法
示例:
package chapter4;
class BankAccount
{
private String id;
private double balance;
public BankAccount()
{
this.id=id;
this.balance = balance;
}
public BankAccount(String id,double balance)
{
this.id=id;
this.balance = balance;
}
public void withdraw(double amount)
{
balance = balance - amount;
}
public void deposite(double amount)
{
balance +=amount;
}
public double getbalance()
{
return balance;
}
public String getid()
{
return id;
}
}
class SavingsAcount extends BankAccount{
//属性
private double interate;
//构造
public SavingsAcount(String id,double balance,double interate)
{
super(id,balance);
this.interate = interate;
}
//得到利息
public void addInterrate()
{
deposite(getbalance()*interate);
}
}
package chapter4;
public class BankAccounttest {
public static void main(String[] args) {
// TODO Auto-generated method stub
BankAccount b1 = new BankAccount("TKK10001",10000);
System.out.println(b1.getid()+":"+b1.getbalance());
b1.withdraw(2000);
b1.deposite(10000);
System.out.println(b1.getid()+":"+b1.getbalance());
SavingsAcount ss = new SavingsAcount("TKK10002",10000,0.06);
System.out.println(ss.getid()+":"+ss.getbalance());
ss.addInterrate();
System.out.println(ss.getid()+":"+ss.getbalance());
}
}
输出:
TKK10001:10000.0
TKK10001:18000.0
TKK10002:10000.0
TKK10002:10600.0
2.多态
多态,就是指一个引用(类型)在不同情况下的多种状态,可以理解为,多态是指通过只想指向父类的指针,来调用在不同子类中实现的方法
多态示例:
package 继承和多态;
public class Wine {
//成员变量
private String name;
//构造
public Wine(String name)
{
this.name = name;
}
//方法函数
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String drink()
{
return "喝的是"+getName();
}
}
package 继承和多态;
public class JNC extends Wine {
public JNC(String name)
{
super(name);
}
public String drink()
{
return "喝的是"+getName();
}
}
package 继承和多态;
public class WLY extends Wine {
public WLY(String name)
{
super(name);
}
public String drink()
{
return "喝的是"+getName();
}
}
测试:
package 继承和多态;
public class WineTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Wine w1 = new JNC("剑南春");
Wine w2 = new WLY("五粮液");
System.out.println(w1.drink());
System.out.print(w2.drink());
}
}