面向对象的第二个基本特征:继承011026

这篇具有很好参考价值的文章主要介绍了面向对象的第二个基本特征:继承011026。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.什么是继承?

生活中:

        继承 ---> 延续

                ---> 扩展

代码中:

        继承 ---> 重复使用已有的类的代码(复用)

                ---> 扩展已有类的代码(扩展)

2.为什么要继承?

① 代码的复用和扩展

② 满足is - a 的关系

事物的分类来说,子类别的关系

Student is a Person.

Teacher is a Person

Car is not a Person

3.如何继承

关键字:extends

语法格式:

【修饰符】 class  子类名  extends  父类名{

}

子类:SubClass,又称为派生类

父类:SuperClass,又称为基类,超类

子类表示的事物范围大,还是父类表示事物的范围大?

如:Person类(人)是父类

       Student类(学生)是子类

       子类  <  父类

子类更具体,里面的成员描述更多

父类更抽象,笼统的描述信息更少

4.继承有什么特点?

① 子类会继承父类所有的实例变量和实例方法,如果理解这句话?

A:虽然子类继承了父类的所有实例变量和实例方法。但是因为权限修饰符的原因,某些成员在子类中不能直接使用,可以间接使用。private修饰的成员,在子类中是不能直接使用的。权限修饰符缺省的成员,在跨包的子类中是不能直接使用的。本包子类可以。

B:这里说的继承所有,是说,子类代表的这个事物,它具备父类中所描述的所有特征。

类的定义:一类具有相同特征的事物的抽象描述。

例如:Person类中有name,age属性,eat()方法

这些特征无论它是否私有,对于子类Student类,它都应该有这个特征。

C:既然是子类继承了所有的实例变量,那么在子类对象创建时,需要在子类对象的堆空间中开辟对应的内存来存它的值。

D:所谓的继承,不是说,父类的代码在子类中完全重复一遍,而是在使用子类时,除了可以用自己本类声明的成员,还可以去父类中寻找可以(看权限修饰符)用的成员。

② java中只支持单继承,即一个子类只能有一个“直接”父类

比喻:一个人只有一个亲生父亲

③ java支持多层继承

比喻:祖宗很多代,代代相传

④ 一个java父类,可以同时有多个子类

Idea中,选中某个类,Ctrl + H,查看继承关系

选中某个类,Ctrl + Alt +  U,以继承树的方式查看继承关系

5.继承后调用父类声明的属性和方法

在继承的时候,子类会继承父类所有的成员变量(实例变量)和成员方法(实例方法)

既然可以继承,

① 在子类外面,子类的对象是否可以使用父类中声明的成员变量和成员方法,只要权限修饰符允许,通过子类对象可以直接使用父类中声明的成员变量和成员方法

② 在子类中,如果要用到父类声明成员变量和成员方法,只要权限修饰符允许,可以直接使用,不需要通过“对象 . ” 的方式来引用父类中声明的成员变量和成员方法。

练习代码:

Person类:

① 声明父类:Person类

- 包含属性:姓名,年龄,性别,属性私有化,

- 包含get/set方法

- 包含getInfo()方法:例如:姓名:张三,年龄:23,性别:男

public class Person {
    private String name;
    private int age;
    private char gender;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public int getAge() {
        return age;
    }
 
    public void setAge(int age) {
        this.age = age;
    }
 
    public char getGender() {
        return gender;
    }
 
    public void setGender(char gender) {
        this.gender = gender;
    }
 
    public String getInfo(){
        return "姓名:" + name +",年龄:" + age + ",性别:" + gender;
    }
}

Student类代码:

② 声明子类:Student类,继承Person类

- 新增属性:score成绩,属性私有化,

- 包含get/set方法

- 重写getInfo()方法:例如:姓名:张三,年龄:23,性别:男,成绩:89

public class Student extends Person{
    private int score;
 
    public int getScore() {
        return score;
    }
 
    public void setScore(int score) {
        this.score = score;
    }
 
    @Override
    public String getInfo() {
        return super.getInfo() + ",成绩:" + score;
    }
 
}

Teacher类代码:

③ 声明子类:Teacher类,继承Person类

- 新增属性:salary薪资,属性私有化,

- 包含get/set方法

- 重写getInfo()方法:例如:姓名:张三,年龄:23,性别:男,薪资:10000

public class Teacher extends Person {
    private double salary;
 
    public double getSalary() {
        return salary;
    }
 
    public void setSalary(double salary) {
        this.salary = salary;
    }
 
    @Override
    public String getInfo() {
        return super.getInfo() + ",薪资:" + salary;
    }
}

TestPerson类代码:

④ 在测试类的main方法中创建三个类的对象,并调用相应的方法测试文章来源地址https://www.toymoban.com/news/detail-452842.html

public class TestPerson {
    public static void main(String[] args) {
        Person p = new Person();
        p.setName("张三");
        p.setGender('男');
        p.setAge(25);
        System.out.println(p.getInfo());
 
        Student s = new Student();
        s.setName("张三丰");
        s.setAge(5);
        s.setGender('男');
        s.setScore(89);
        System.out.println(s.getInfo());
 
        Teacher t = new Teacher();
        t.setName("柴林燕");
        t.setAge(18);
        t.setGender('女');
        t.setSalary(10000);
        System.out.println(t.getInfo());
    }
}

到了这里,关于面向对象的第二个基本特征:继承011026的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hadoop的第二个核心组件:MapReduce框架第二节

    1、客户端在执行MR程序时,客户端先根据设置的InputFormat实现类去对输入的数据文件进行切片(getSplits),如果没有设置InputFormat实现类,MR程序会使用默认的实现类(TextInputFormat–FileInputFormat的子类)进行切片规划,生成一个切片规划文件 2、客户端的切片规划文件生成以后

    2024年02月09日
    浏览(37)
  • Python学习之路-面向对象:三个基本特征

    封装:根据职责将属性和方法封装到一个抽象的类中 继承:实现代码的重用,相同的代码不需要重复的编写 多态:不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度 封装是面向对象编程的一大特点,面向对象编程的第一步就是将属性和方法封装到一个抽

    2024年02月02日
    浏览(56)
  • Hadoop的第二个核心组件:MapReduce框架第四节

    MapReduce可以对海量数据进行计算,但是有些情况下,计算的结果可能来自于多个文件,每个文件的数据格式是不一致,但是多个文件存在某种关联关系,类似于MySQL中外键关系,如果想计算这样的结果,MR程序也是支持的。这种计算我们称之为join计算。 MR的join根据join数据的位

    2024年02月09日
    浏览(60)
  • Hadoop的第二个核心组件:MapReduce框架第一节

    Hadoop解决了大数据面临的两个核心问题:海量数据的存储问题、海量数据的计算问题 其中MapReduce就是专门设计用来解决海量数据计算问题的,同时MapReduce和HDFS不一样的地方在于,虽然两者均为分布式组件,但是HDFS是一个完善的软件,我们只需要使用即可,不需要去进行任何

    2024年02月09日
    浏览(32)
  • Hadoop的第二个核心组件:MapReduce框架第三节

    InputFormat阶段 :两个作用 负责对输入的数据进行切片,切片的数据和Mapper阶段的MapTask的数量是相对应的。 负责MapTask读取切片数据时,如何将切片的数据转换成为Key-value类型的数据,包括key-value的数据类型的定义。 Mapper阶段 作用处理每一个切片数据的计算逻辑。 map方法的执

    2024年02月09日
    浏览(45)
  • 02 面向对象( 继承,抽象类)

    强调:一定用自己的话总结,避免抄文档,否则视为作业未完成。 this的作用 为了解决成员变量和局部变量所存在的二义性,适用于有参构造时使用 示例 为成员变量设置值, 构造器和setter方法的选择,为什么? 构造器:在知道具体的参数的时候可以使用,可以创建对象并做

    2024年02月06日
    浏览(48)
  • python 面向对象之继承

    前面我们已经学习了 python 面向对象的类和对象,那么今天我将为大家分享面向对象的三大特性之一:继承。 继承具有以下特性: 代码重用:继承允许我们创建一个新的类,并从一个或多个现有的类中继承属性和方法。这使得我们可以避免重复编写相同的代码,提高代码的重

    2024年02月15日
    浏览(48)
  • Java面向对象继承

    目录 继承的概念 继承的作用 继承 extends implements super 与 this 继承类型 类的继承格式 继承是面向对象编程中的一个概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。子类在继承父类的同时也可以添加自己

    2023年04月13日
    浏览(33)
  • 【C++面向对象】8. 继承

    继承允许我们依据一个类来定义另一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了 重用代码功能 和 提高执行时间 的效果。 当创建一个类时,我们不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已

    2024年02月08日
    浏览(52)
  • C++ 面向对象(2)——继承

    面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。 当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类

    2024年02月10日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包