面向对象编程的三大特征:

封装、继承、多态

今天我们学习继承!

  1. 继承是多态的前提,如果没有继承就没有多态。

  2. 继承主要解决的问题就是共性抽取(将许多类共有的特性便作父类,这样可以较大程度的优化代码)。

  3. 父类又称基类、超类;子类又称派生类。

  4. 在继承关系中子类“就是”一个父类。如何理解?==》例如:动物类是父类,人类是子类,人就是动物。

  5. 如果父类和子类有一个重名的变量。子类中想要访问父类的重名变量需要用到一个关键字super。

  6. 无论成员属性还是成员方法,只要当前对象没有,只会向上走父类的同名属性或方法,而不会向下找。

  7. 父类的方法子类重写(方法名相同,参数相同)时,①需要标明 @Override 用来检测重写方法是否有效。需要注意的是,这个 @Override 是可有可无的,写只是为了检测,不写也不会影响重写效果。②但是父类的返回值必须大于等于子类的返回值!即父类的返回值是子类返回值的父类或多级父类或同类。③而且子类方法的权限必须大于等于父类方法的权限(public > protected > (default)默认> private),这种(标注③)情况不可以写@Override。

  8. 子类的构造方法当中,会有一个默认的super()方法调用,也就是说子类对象创建时会默认先执行父类的构造方法再执行子类的构造方法。

  9. 子类必须调用父类的构造函数。1.父类没有写构造函数(系统默认有一个无参构造函数),子类可以不写构造函数。2.如果父类有无参构造函数,子类可以不写构造函数。3.如果父类存在有参构造函数,则子类必须在自己的构造函数中显示的调用父类的构造函数即super(参数名),并且必须是子类构造函数的第一句代码,也就是说只能调用任意一个父类构造函数,不能调用多个。4.如果父类的构造函数只有一个,且修饰符是private,则不可以被继承。

  10. super关键字的三种用法。①访问父类成员属性。②访问父类成员方法。③访问父类构造函数。
  11. super关键字用来访问父类内容,this关键字用来访问本类内容。
  12. super()代表调用父类构造方法,this()代表调用本类构造方法。且不能同时使用,因为调用的构造函数必须为第一句代码。
  13. Java只支持单继承,不支持多继承,但是可以通过接口实现多继承的功能;Java可以多级继承,原始类为java.lang.Object类;Java一个父类可以有多个子类,一个子类,只能有一个父类。
  14. 如果父类的构造函数中调用的方法被子类重写,那么调用的会是子类的方法。

父类代码:

public class Animal {

public static int id = 0;

    public int age;

    public String name;

public Animal(int age,String name){

id++;

        this.age = age;

        this.name = name;

        this.eat();

    }

public void eat(){

System.out.println(this.age + "岁的" + this.name + "喝水。");

    }

public int getID(){

return this.id;

    }

}

第一个子类代码:

public class Dog extends Animal{

public Dog(int age,String name){

super(age,name);

        eat();

    }

@Override

    public void eat(){

System.out.println(super.age + "岁的" + super.name + "吃骨头。");

    }

}

第二个子类代码:

public class Cat extends Animal{

    public Cat(int age,String name){

        super(age,name);
eat();
} @Override
public void eat(){ System.out.println(super.age + "岁的" + super.name + "吃鱼。");
}
}

程序执行代码:

public class Demo {

    public static void main(String[] args) {

        Dog dog = new Dog(2,"流浪狗");
Cat cat = new Cat(3,"小花猫");
System.out.println("我家一共养了" + cat.getID() + "只动物");
}
}

Java第七天,类的继承的更多相关文章

  1. 黑马程序员——JAVA基础之简述 类的继承、覆写

    ------- android培训.java培训.期待与您交流! ---------- 继承的概述: 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只 ...

  2. java第四节 类的继承/抽象/接口/多态性

    /* 类的继承 类的继承可以简化类的定义 java只支持单继承,不允许多重继承 可以有多层继承,即一个类可以继承其一个类的子类,如类B继承了类A,类C又可以继承类B 那么类C也间接继承了类A 子类继承 ...

  3. C#图解教程 第七章 类和继承

    类和继承 类继承访问继承的成员所有类都派生自object类屏蔽基类的成员基类访问使用基类的引用 虚方法和覆写方法覆写标记为override的方法覆盖其他成员类型 构造函数的执行 构造函数初始化语句类访 ...

  4. 第六周&Java实验报告四(类的继承)

    一.实验目的 (1)掌握类的继承 (2)变量的继承和覆盖,方法的继承,重载和覆盖的实现: 二.实验的内容 (1)根据下面的要求实现圆类Circle. 1.圆类Circle的成员变量:radius表示圆 ...

  5. java基础二、类与继承

    员工类 Employee, 经理类:Manager public class Employee { private String name; private double salary; privat ...

  6. JavaScript 类式继承与原型继承

    交叉着写Java和Javascript都有2年多了,今天来总结下自己所了解的Javascript类与继承. Javascript本身没有类似Java的面向对象的类与继承术语,但其基于原型对象的思想却可 ...

  7. java基础讲解09-----接口,继承,多态

    还有什么包装类,数字类,这些简单的我就不想过去介绍,前面也大概的介绍了下,继承,多态 1.类的继承 继承的思想:基于某个父类的扩展,制定一个新的子类.子类可以继承父类原有的属性,方法,也可以重写父类的 ...

  8. “全栈2019”Java第七十八章:内部类可以继承其他类吗?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  9. Java编程里类的继承

    今天,我们将要讨论的内容是Java里面类的继承的相关概念. 说到继承,我相信大家都不陌生.生活中,子承父业,子女继承父母的财产,这就是继承.实际上,Java里的继承也是如此.对于一个类来说,它的数据成 ...

  10. (转)Java:类与继承

    原文地址: http://www.cnblogs.com/dolphin0520/p/3803432.html 对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础.抽象.封装.继承.多态这四大 ...

随机推荐

  1. (转)const的内部链接属性(C++中适用)

    转载自:http://xiangwangfeng.com/2011/05/02/const%E7%9A%84%E5%86%85%E9%83%A8%E9%93%BE%E6%8E%A5%E5%B1%9E% ...

  2. (转)协议森林02 小喇叭开始广播 (以太网与WiFi协议)

    协议森林02 小喇叭开始广播 (以太网与WiFi协议) 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们在邮差与邮局中说到,以 ...

  3. Android微信逆向--实现发朋友圈动态

    0x0 前言 最近一直在研究Windows逆向的东西,想着快要把Android给遗忘了.所以就想利用工作之余来研究Android相关的技术,来保持对Android热情.调用微信代码来发送朋友圈动态一直 ...

  4. Codeforces Round #200 (Div. 2)E

    Read Time 题意:有一个数组,很多指针指在这个数组上,每次每个指针可以向左或向右移动一个位置.给出一些需要访问的位置,问访问用的最少时间. 一个指针只可能转一次方向.二分答案. #includ ...

  5. 《Python学习手册 第五版》 -第17章 作用域

    上一章的是函数的基础,因为函数在运用过程中,是可以嵌套的,函数中是会涉及到变量的,为了明确各自变量的使用范围,系统是有一套规则或者原则的,这就是作用域的概念 本章重点内容 1.作用域:作用域的概念 2 ...

  6. Scikit-Learn 源码研读 (第二期)基类的实现细节

    目录 BaseEstimator `get_params` `set_params` ClassifierMixin RegressorMixin 检查传入的对象 检查样本数和权重系数 实现$R^2$ ...

  7. Spring01——你应该了解的,有关 IOC 容器的一切

    从本文开始,将开始介绍关于 Spring 的一些常见知识点.关注我的公众号「Java面典」,每天 10:24 和你一起了解更多 Java 相关知识点. 在如今的 Java Web 开发中,Spring ...

  8. Python实现一个ORM模型类

    ORM是三个单词首字母组合而成,包含了Object(对象-类),Relations(关系),Mapping(映射).解释过字面意思,但ORM的概念仍然模糊.私以为要理解一个事物,最好的法子是搞明白它出 ...

  9. dnSpy C#逆向工具

    dnSpy下载地址:https://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/dnSpy.shtml ...

  10. 前端html学习笔记

    一 HTML介绍 1. Web服务的本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.li ...