Java中的继承机制

今天我们来说一说Java语言中的继承机制,这是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类间接继承T、A类

8、java语言中假设一个类没有显示继承任何类,该类默认继承JavaSE库中的java.lang.Object类,java语言中任何一个类都有Object类的特征

下面我们来写一下关于继承机制的一个例子:

package Day3;

public class Account {
	//设定一个账户类包括其中的属性
    private String actno;//账户名
    private double balance;//账户余额

    public Account() {//无参构造方法
        super();
    }

    public Account(String actno, double balance) {//有参构造方法
        super();
        this.actno = actno;
        this.balance = balance;
    }

    public String getActno() {
    	//由于设定的是private私有,需要用set、get方法获取其中的数据
        return actno;
    }

    public void setActno(String actno) {
        this.actno = actno;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }
}

package Day3;

public class CreditAccount extends  Account {
	//该类继承账户类  
	//私有方法不支持继承
    private double credit;
    //子类中特有属性

    public CreditAccount() {

    }
    public double getCredit() {//子类中特有的类
        return credit;
    }

    public void setCredit(double credit) {
        this.credit = credit;
    }
}

package Day3;

public class Extends {
    public static void main(String [] args)
    {
        Extends  et = new Extends();//继承Object父类、超类、superclass、基类
        String s = et.toString();
        /*
        toString是Object中写的内容
        默认继承Object类
        */
        
        System.out.println(s);

        CreditAccount act = new CreditAccount();//创建子类对象
        act.setActno("act-001");//给子类对象属性赋值
        act.setBalance(-1000);
        act.setCredit(0.99);

        System.out.println(act.getActno() + " , " + act.getBalance() + " , " + act.getCredit());

    }
}

关于java语言中的方法重载:

1、方法重载又称为overload

2、方法重载什么时候使用?

在同一个类当中,方法完成的功能是相似的,建议方法名相同,这样方便程序员编程,就像在调用一个方法似的,代码美观

3、什么条件满足之后构成方法重载

  • 在同一个类当中
  • 方法名相同
  • 参数列表不同:类型、顺序、个数

4、方法重载和什么无关?

  • 和方法的返回值类型无关
  • 和方法的修饰符列表无关

关于java语言中的方法覆盖

1、方法覆盖又被称为方法重写,英语单词override/overwrite

2、什么时候使用方法重写?
当父类中的方法以及无法满足当前子类业务需求,子类有必要将父类中继承过来得到方法进行重写编写,这个重写编写的过程称为方法重写/方法覆盖

3、什么条件满足之后方法会发生重写呢?【代码组成什么条件之后,就构成方法的覆盖呢?】

  • 方法重写发生在具有继承关系父子类之间
  • 返回值类型相同,方法名相同,形参列表相同
  • 访问权限不能更低,可以更高,public为最高
  • 抛出异常不能更多,可以更少。

4、简易方法重写时候尽量复制粘贴,或者直接生成,不容易出错,不要编写,容易出错

5、注意:

  • 私有方法不能继承,所以不能覆盖
  • 构造方法不能继承,所以不能覆盖
  • 静态方法不存在覆盖
  • 覆盖只针对方法,不谈属性

eg

public class Extends {
public static void main(String [] args)
{

Animal al = new Animal();//创建动物对象
al.Animal();

Bird rd = new Bird();//创建小鸟对象
rd.Animal();

Cat at = new Cat();//创建小猫对象
at.Animal();


}
}

package Day3;

public class Animal {
public void Move()
{
System.out.println("动物在移动");
}
}

package Day3;

public class Bird extends Animal{
public void Move()
{
System.out.println("小鸟在飞翔");
}
}

package Day3;

public class Cat extends Animal {
public void Move()
{
System.out.println("小猫在走猫步");
}
}

此处其他动物类都有动物移动move()的功能,我们在此刻,使用子类( Cat 、 Bird )继承父类( Animal ),又由于不同动物的移动方式不同,在此刻需要根据不同子类所需,对其进行不同类别功能的实现,在此我们把这种操作称为方法重写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值