Java复习之继承

这篇博客主要是总结一下类的继承的相关知识。

1.继承的基本概念
(1)继承是面向对象三大特征之一
(2)被继承的类称为父类,继承父类的类是子类
(3)继承是指一个对象直接使用另一个对象的属性和方法
(4)通过继承可以实现代码的重用

2.继承的语法
[访问权限] class 子类名 extends 父类名
{
类定义体;
}

3.继承的限制
(1)Java只能实现单继承,也就是一个类只能有一个父类
(2)允许多层继承,即:一个子类可以有一个父类,一个父类还可以有其他的父类。
(3)继承只能继承非私有的属性和方法
(4)构造方法不能被继承

4.子类的实例化过程
在子类进行实例化操作(也就是使用new关键字new对象的时候,这时便会调用构造方法)的时候,首先会先让其父类进行实例化操作,调用父类默认的构造方法。之后子类在自己进行实例化操作。

父类中无默认构造方法时,子类构造方法中必须必须显示的调用父类的构造方法,使用super()关键字,参数跟父类的构造方法相同。

5.方法重写
(1)定义
在java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但是有时子类并非不想原封不动的继承父类的方法,而是想作一定的修改,这就需要采用方法重写。方法重写又称方法覆盖。
(2)特性
a.发生方法重写的两个方法返回值、方法名、参数列表必须完全一致
b.子类抛出的异常不能超过父类相应方法抛出的异常(子类的异常不能大于父类的异常)
c、子类方法的访问级别不能低于父类相应方法的访问级别(子类的访问级别不能低于父类的访问级别)

6.super关键字
(1)使用super调用父类中的属性
(2)使用super调用父类中的方法
(3)使用super调用父类中的构造方法

7.final关键字
(1)使用final关键字声明一个类
该类不能被继承
(2)使用final关键字声明一个方法
该方法不能被子类重写
(3)使用final关键字声明一个常量
该变量的值不能修改,最终的值
常量的赋值
(1)在声明的同时赋值
(2)可以通过构造方法赋值

ExtendDemo

public class ExtendsDemo {
    public static void main(String args[])
    {
        HomeChicken homeChicken = new HomeChicken();
        homeChicken.desc();
        System.out.println("====================");

        Pheasant pheasant = new Pheasant("小白");
        pheasant.desc();
    }
}
//父类
class Chicken1{
    String name;
    public Chicken1(String name)
    {
        System.out.println("Chicken:"+name);
    }

    public void desc()
    {
        System.out.println("我是一只鸡");
    }
}
//子类(家鸡)
class HomeChicken extends Chicken1
{
    public HomeChicken()
        {
            //表示父类的引用,必须是第一句
            super("小白");
            System.out.println("HomeChicken");
        }
}
//子类(野鸡)
class Pheasant extends Chicken1
{
    public Pheasant(String name)
    {
        super("小白");
        this.name=name;
        System.out.println("Pheasant");
    }
}

SuperKeyWordDemo

public class superKeyWordDemo {
    public static void main(String args[])
    {
        Duck1 duck1 = new Duck1("小黑",100);
        BlackDuck blackDuck=new BlackDuck("小白",300);
        blackDuck.desc();
        duck1.count();
    }
}
class Duck1 {
    protected String name;
    protected int price;

    public Duck1(String name,int price)
    {
        this.name=name;
        this.price=price;
    }
    public void count()
    {
        System.out.println("duck price is"+price);
    }
}
class BlackDuck extends Duck1{
    public BlackDuck(String name,int price)
    {
        super(name,price);
    }
    public void desc()
    {
        System.out.println("我是一只黑鸭子"+super.name);
        super.count();
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值