一、继承extends
1、继承的作用
基本作用:子类继承父类,代码可以得到复用
主要作用:因为有了继承关系,才有了后期的方法覆盖和多态机制
2、继承的语法结构
class 类名 extends 父类名{
类体;
}
// 使用继承机制来解决代码复用问题。
// 继承也是存在缺点的:耦合度高,父类修改,子类受牵连。
public class ExtendsTest02{
public static void main(String[] args){
// 创建普通账户
Account act = new Account();
act.setActno("1111111");
act.setBalance(10000);
System.out.println(act.getActno() + ",余额" + act.getBalance());
// 创建信用账户
CreditAccount ca = new CreditAccount();
// 这两个方法子类从父类继承过来的
ca.setActno("2222222");
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());
System.out.println(getActno());
}
// setter and getter方法
public void setCredit(double credit){
this.credit = credit;
}
public double getCredit(){
return credit;
}
}
3、继承的相关特性
1)B类继承A类,则称A类为超类(superclass)、父类、基类,B类则称为子类(subclass)、派生类、扩展类。 2)java 中的继承只支持单继承,不支持多继承,C++中支持多继承,这也是 java 体现简单性的一点,换句话说,java 中不允许这样写代码:class B extends A,C{ } 这是错误的。 3)虽然 java 中不支持多继承,但有的时候会产生间接继承的效果 例如:class C extends B,class B extends A,也就是说,C 直接继承 B,其实 C 还间接继承 A。 4)java 中规定,子类继承父类,除构造方法不能继承之外,剩下都可以继承。但是私有的属性无法在子类中直接访问。 (父类中private修饰的不能在子类中直接访问。可以通过间接的手段来访问。) 5)java 中的类没有显示的继承任何类,则默认继承 Object类,Object类是 java 语言提供的根类(老祖宗类),也就是说,一个对象与生俱来就有 Object类型中所有的特征。 6)继承也存在一些缺点,例如:CreditAccount 类继承 Account 类会导致它们之间的耦合度非常高,Account 类发生改变之后会马上影响到 CreditAccount 类4、什么时候使用继承
凡是采用“is a”能描述的都可以继承 例如:Cat is a Animal猫是一个动物 Dog is a Animal狗是一个动物 CreditAccount is Account......二、Object类
1、Object类提供了哪些方法
1)Java内置了一套庞大的类库,我们可以基于类库进行二次开发,也就是jdk内置的类库实现了很多基础的功能,例如:String是sun编写的字符串类、System是sun编写的系统类 2)jdk源代码位置:jdk文件目录下lib下的src文件夹 3)当源码中的一个方法以“;”结尾,并且修饰符列表中有“native”关键字,表示底层调用c++写的dll程序(dll动态链接库文件)// Object类中的一个方法
private static native void registerNatives();
5)equals方法
public boolean equals(Object obj){
return (this == obj);
}
4)toString方法
public String toString(){
return getClass().getName() + "@" + Integer.toHexString(jashCode());
}
// 如果使用System.out.println()这个方法输出一个引用的话
System.out.println(引用类型);
// 底层会自动调用toString方法,输出toString方法的结果
标签:Account,--,子类,System,继承,JavaSE,actno,public From: https://www.cnblogs.com/hyy-0/p/17609631.html