栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础——继承

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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);	//输出对象的信息
    }
}


如示例,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);	//输出对象的信息

    }
}


方法的重写

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

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);	//输出对象的信息

    }
}


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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/948495.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号