Java基础——继承

类的继承

继承机制下,可以复用写好的类,子类继承了父类,则子类将拥有父类的成员变量和成员方法,减少了代码的冗余,增加了代码的复用性。
语法:

class Parent { }
class Child extends Parent { }

Extends是继承关键字,注意,Java只支持单继承,一个类只能有一个父类,但一个类可以有多个子类
继承示例代码:

class Parent {
    int Id;
    String name;
	
    public String toString() {	//toString方法为对象提供一种特定的输出模式,当对象被Printf()方法打印时,默认调用该方法
        return Id+" "+name;
    }
    
}

class Child extends Parent {
    
}

public class Temporary {
    public static void main(String[] args) {
        Child child1 = new Child();
        child1.Id = 1001;
        child1.name = "Jack";
        System.out.println(child1);	//输出对象的信息
    }
}

/*运行结果:
1001 Jack
*/

如示例,Parent类有Id和name两个成员属性以及toString方法,Child类继承了Parent类,则也拥有了这两个成员属性和方法。

构造方法

构造方法是在新建实例化对象时调用的类方法。如果类中没有构造方法,则系统自动调用一个默认的无参构造方法。利用有参构造方法,可以在实例化对象时为对象的成员属性传值。如果类有了有参构造方法,那么系统不会自动调用一个默认的无参构造方法,所以,每个类都自己写一个无参构造方法是一个好习惯

this关键字

this关键字代表一个引用,指向正在调用该方法的当前对象,用在构造方法的第一行,比如this.name代表当前对象的name属性

super关键字

super()表示调用父类中的构造方法,用在子类构造方法的第一行,比如super(Id,name),表示调用父类无参构造,并且传输Id与name作为参数

示例代码如下:

class Parent {
    int Id;
    String name;

    public Parent () { }	//无参构造函数

    public Parent(int Id,String name) {	//有参构造函数
        this.Id = Id;
        this.name = name;
    }

    public String toString() {	//toString方法为对象提供一种特定的输出模式,当对象被Printf()方法打印时,默认调用该方法
        return Id+" "+name;
    }

}

class Child extends Parent {

     public Child() { }	//无参构造函数

    public Child(int Id,String name) {	//有参构造函数
        super(Id,name);
    }
}

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

        Child child1 = new Child(); //用无参构造创建对象
        child1.Id = 1001;
        child1.name = "Jack";
        System.out.println(child1);	//输出对象的信息

        Child child2 = new Child(1002,"Tom");	//用有参构造创建对象
        System.out.println(child2);	//输出对象的信息

    }
}

/*运行结果:
1001 Jack
1002 Tom
*/

方法的重写

当从父类继承来的方法无法满足子类的需求时,可以在子类中重写父类中已有的方法,那么子类对象就可以调用子类重写的方法,实现了代码的拓展性
示例代码:

class Parent {
    int Id;
    String name;

    public Parent () { }	//无参构造函数

    public Parent(int Id,String name) {	//有参构造函数
        this.Id = Id;
        this.name = name;
    }

    public String toString() {  //父类中已有的方法
        return Id+" "+name;
    }

}

class Child extends Parent {

    public Child() { }	//无参构造函数

    public Child(int Id,String name) {	//有参构造函数
        super(Id,name);
    }

    @Override   //伪代码,重写标示符,作用是通知编译器检查下方的重写方法
    public String toString() {  //子类中的重写版本
        return name+"的"+"Id"+"是"+Id;
    }

}

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

        Child child1 = new Child(); //用无参构造创建对象
        child1.Id = 1001;
        child1.name = "Jack";
        System.out.println(child1);	//输出对象的信息

        Child child2 = new Child(1002,"Tom");	//用有参构造创建对象
        System.out.println(child2);	//输出对象的信息

    }
}

/*运行结果:
Jack的Id是1001
Tom的Id是1002
*/

注意,重写方法时,方法的返回类型、方法名、参数类型都不变,修饰符所限制的访问范围不能变小,只重写方法体

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值