java继承extend后子父类属性方法特点解析

本文探讨了Java中extend关键字的使用,详细解释了子类如何继承父类的属性和方法,包括重写、super关键字的应用,以及子类与父类对象之间的转型规则。重点提到了子类必须继承父类至少一个构造方法,并介绍了不继承时的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

extend

代码示例:

class Book {
    String name;
    double price;
    String author;

    Book(String name, double price, String author) {
        this.name = name;
        this.price = price;
        this.author = author;
    }

    // 默认的构造方法,当子类不继承父类的构造方法时,父类需要有这样的构造方法
    Book(){}

    void show() {
        System.out.println("书名:" + this.name);
        System.out.println("定价:" + price);
        System.out.println("作者:" + author);

    }

    public static void main(String args[]) {
        Combook book1 = new Combook("简爱", 20, "aobote", true);
        book1.show();
        System.out.println(book1.name);
        System.out.println(book1 instanceof Book);
        System.out.println(book1 instanceof Combook);
        Book book = (Book) book1;
        System.out.println(book.name);
        Combook combook = (Combook) book;
        System.out.println(combook.name);
    }
}

class Combook extends Book {
    boolean hasDisp = true;
    // 子类重写父类的属性
    String name = "koala";

    Combook(String name, double price, String author, boolean hasDisp) {
        super(name, price, author);
        this.hasDisp = hasDisp;
    }

    @Override
    void show() {
        super.show();
        System.out.println("是否有光盘?" + hasDisp);
        System.out.println("1" + name);
        System.out.println("2" + this.name);
        System.out.println("3" + super.name);
    }
}

输出结果:

书名:简爱
定价:20.0
作者:aobote
是否有光盘?true
1koala
2koala
3简爱
koala
true
true
简爱
koala

Process finished with exit code 0

可见:
1 子类可以继承父类的属性和方法,子类也可以重写父类的属性和方法,实现子类的特殊性;

2 通过super(父类构造方法参数集),可直接继承父类的构造方法,但不同于将父类的构造方法挪到子类,因为super()不会改变子类的属性值。

3 super关键字用于调用父类对象的属性和方法,this关键字用于调用子类当前对象的属性和方法。当子类重新定义了父类的属性时,如name,且子类构造方法继承父类的构造方法,则重写的属性遵从父类构造方法对该属性的处理,new一个子类对象时,该对象的属性继承父类的属性值,若需使用子类的属性值,则需在子类的构造方法内进行处理。

4 子类和父类对象可以互相强制转型,当子类转为父类,将丢失子类对象的特殊性,同样的当父类对象转为子类对象,属性值会变为子类重写的属性值,具有子类的特殊性。

5 子类必须要继承父类至少一个构造方法,如不想继承,需要在父类添加默认的构造方法Book(){}。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值