11 继承extends

继承是面向对象三大特征之一。java中的继承描述的是两个类之间的关系,被继承的

类称为父类,继承的类称为子类,使用extends关键字来表示。

在java语言里面只支持单继承,即一个类只能有一个父类,子类可以继承父类中的

非private修饰的成员方法和成员变量,构造方法不能被继承,java里面的继承跟现

实生活中的继承颇为相似,现实生活中一个儿子只能有一个父亲,儿子可以继承父亲

的房子车子但是不能继承父亲大脑里面的思想和知识。如果一个类没有显示的继承

其他类,那么这个类会默认继承Object类,Object是SUN公司提供的java中的根类。

继承的优点

1 提高了代码的复用性
2 提高了代码的维护性
3 让类与类之间产生了关系,是多态的前提

继承的缺点

增强了类之间的耦合。
软件开发的一个原则是高内聚,低耦合。
内聚是一个模块内各个元素彼此结合的紧密程度
耦合是一个软件里面不同模块之间相互连接的数量

如何使用extends来实现继承关系?

语法:

[修饰符列表] class 子类名 extends 父类名{
    类体;
}

首先,来自己定义一个父类SuperClass

public class SuperClass{

    public void m1(){
        System.out.println("SuperClass中的m1方法");
    }

    private void m2(){
        System.out.println("SuperClass类中的m2方法");
    }

}

然后定义一个子类SubClass来继承SuperClass

public class SubClass extends SuperClass{

    public void m3(){
        System.out.println("SubClass中的m3方法");
    }
}

写一个测试类来测试一下

public class Test01{

    public static void main(String[] args){

        SubClass s = new SubClass();
        //因为SubClass继承了SuperClass,所以可以在子类里面调用父类的方法
        s.m1();

        //s.m2();//子类不能访问父类中private修饰的方法

        //SubClass中自己的方法
        s.m3();

    }

}

将上面代码修改一下,创建一个SuperClass的父类SuperSuperClass

public class SuperSuperClass{

    public void m0(){
        System.out.println("SuperSuperClass中的m0方法");
    }

}

让SuperClass继承SuperSuperClass

public class SuperClass extends SuperSuperClass{

    public void m1(){
        System.out.println("SuperClass中的m1方法");
    }

    public void m2(){
        System.out.println("SuperClass类中的m2方法");
    }

}

写一个测试类来测试一下

public class Test02{

    public static void main(String[] args){

        SubClass s = new SubClass();
        s.m0();//可以调用

    }

}

Java不支持多继承,但是支持多层继承,即子类—>父类—>爷爷类….—>祖先类—>Object类,子类可以访问其先辈类里面的非private修饰的成员方法和成员变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用继承extends关键字的Java代码编写例子: ```java // 定义一个父类Animal class Animal { protected String name; public Animal(String name) { this.name = name; } public void eat() { System.out.println(name + "正在吃东西"); } } // 定义一个子类Cat,继承自Animal类 class Cat extends Animal { public Cat(String name) { super(name); } public void meow() { System.out.println(name + "正在喵喵叫"); } } // 定义一个子类Dog,继承自Animal类 class Dog extends Animal { public Dog(String name) { super(name); } public void bark() { System.out.println(name + "正在汪汪叫"); } } // 主函数入口 public class Main { public static void main(String[] args) { Cat cat = new Cat("Tom"); cat.eat(); // 输出:Tom正在吃东西 cat.meow(); // 输出:Tom正在喵喵叫 Dog dog = new Dog("Jerry"); dog.eat(); // 输出:Jerry正在吃东西 dog.bark(); // 输出:Jerry正在汪汪叫 } } ``` 在上面的例子中,我们定义了一个父类Animal和两个子类Cat和Dog。子类Cat和Dog继承父类Animal的属性和方法,通过extends关键字实现了继承子类可以覆盖父类的方法,同时还可以定义自己特有的方法。通过继承和多态性,我们可以实现代码的复用和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java_extends相关,类单继承,为什么接口可以多继承](https://blog.csdn.net/monicateacat/article/details/131084257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Java 面向对象编程(二)——继承extends关键字,protected修饰符,super关键字](https://blog.csdn.net/weixin_50080344/article/details/124484748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值