继承

继承

继承是面向对象程序设计不可缺少的设计思想,是实现代码可重用的根基,是提高代码可扩展性的主要途径。

继承是从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并能扩展新的能力。

–在JAVA中使用extends关键字来表示继承关系。

–JAVA不支持多继承,单继承使JAVA的继承关系很简单,一个类只能有一个直接父类。

–继承之后子类可以调用父类的所有非私有属性和非私有方法

/*
 * 用 extends 表示继承
 *  java 中只能直接继承一个父类
 * 继承后子类能直接调用父类的非私有的内容(要调用私有内容要使用父类中特定的方法)
 * */
public class Animal extends Object {
           String name;
       private int age;

    public void eat(){
        System.out.println("吃:::");
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Animal() {
        System.out.println("animal的无参构造方法");
    }
}

public class Dog extends Animal{
    String kind;
    private String behavior;
    public void wang(){
        System.out.println("汪汪汪");
    }

    public String getBehavior() {
        return behavior;
    }

    public void setBehavior(String behavior) {
        this.behavior = behavior;
    }
    public Dog(){
        System.out.println("Dog的无参构造方法");
    }

    public Dog(String kind) {
        System.out.println("Dog的有参数构造方法");
    }
}

public class Test {
    public static void main(String[] args) {
        Dog d=new Dog();
        //继承父类的类容
        d.name="富贵";
        System.out.println(d.name);
        d.eat();
        d.setAge(18);
        System.out.println(d.getAge());

        //自己的类容
        d.kind="土狗";
        System.out.println(d.kind);
        d.wang();
        d.setBehavior("摇尾巴");
        System.out.println(d.getBehavior());
    }
}

注:在创建子类对象时,会先调用父类构造方法,创建父类对象

super关键字

super关键字代表父类的引用,在程序中主要的用途

在子类构造方法中要调用父类的构造方法,需要注意:super语句只能出现在子类构造方法体的第一行。

用“super.成员变量名”来引用父类成员变量

用“super.方法名(参数列表)”的方式访问父类的方法。

与this的区别,this通常指代当前对象,super通常指代父类。

public class TuGou extends Dog {
    public TuGou(){
        //    使用super关键字调用父类任意一个构造方法,若要用super 则要写在第一行
        super("哮天犬");
        System.out.println("土狗的无参构造方法");
    }
}
方法的重写(OverRide)

在子类中可以根据需要对从基类中继承来的方法进行重写。

方法重写规则:

–方法名相同、参数列表相同;

–返回值类型相同;

–访问权限等于或大于父类权限;

注意:构造方法不能重写

public class TuGou extends Dog {

/* 方法的重写
  由于父类的功能满足不了子类的需求,或者子类与父类功能不一样时

  重写时,要与父类保持一致(类型,返回值,参数),访问权限修饰符子类要大于等于父类

  可以用super 继续调用父类的方法和属性,与调用构造方法不同可以不放在第一行

* */
    @Override  //注释(标签),表明方法是重写来的
    public void wang() {
        System.out.println("土狗叫");
        super.wang();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值