1.继承的作用

为了提取两个类中公共的代码,可以使用继承抽取重复性的代码到一个公共类中。

这个公共的类称为父类(super class),继承于父类的类称为子类(sub class)。

2.java继承的特性

[1] 单根性。在java中,一个类只能有一个直接父类。

[2] 传递性。C继承于B,B继承于A,C具有A的特性和行为。

3.类B继承于类A,使用关键字extends,B拥有了A中非私有的属性和方法。

 public class Person{
String name;
int age; public void showInfo(){
System.out.println("姓名:"+name);
System.out.println(",年龄:"+age);
}
}
 public class Student extends Person{

 }
 public class Test01{
public static void main(String[] args){
Student s = new Student();
s.name = "张三";
s.age = 20;
s.showInfo();
}
}

4.Super

super关键字表示父类对象,只是一个关键字,里面没有引用。

[1]super能访问父类构造方法

注意:super调用父类构造方法时,必须写到构造方法有效代码第一句。

[2] super调用父类的非私有属性

super可以访问父类的非私有属性。私有的属性不能用super访问。

当子类定义了一个和父类同名的属性时,在子类中优先访问子类的属性,如果要访问父类属性一定要加super。

[3]访问非私有父类方法

5.父类不能被子类继承的成员

6.继承关系的初始化顺序

7.继承关系内存图

8.方法的重写

当子类从父类继承过来的方法不能满足自身需要时,子类可以根据自身情况进行方法重写(overwrite/override)。

方法重写建立在继承的基础上,没有继承,就没有重写!

子类根据自身情况,可以选择部分重写和完全重写。

[1]部分重写

 public void showInfo(){
super.showInfo();
System.out.println("我是一只"+this.getStrain());
}

[2]完全重写

 public void showInfo(){
System.out.println("--"+super.getName()+"--");
System.out.println("健康值:"+super.getHealth());
System.out.println("亲密度:"+super.getLove());
System.out.println("品种:"+this.getStrain());

[3]重写的规则

a.方法名称相同

b.参数列表相同

c.子类的访问权限一定 >= 父类访问权限

d.返回值和父类相同或者是其子类

 public Pet create(){
Pet pet = new Pet();
return pet;
}
 public Dog create(){
Dog dog = new Dog();
return dog;
}

Java基础--面向对象编程3(继承)的更多相关文章

  1. Java基础--面向对象编程1(类与对象)

    1.类(class)的定义 类是对一组具有相同特征和行为的对象的抽象描述. 在程序中,引入类的概念,就是为了快速生成更多的具有相同特性和行为的事物. 2.对象(object)的定义 对象是类的具体实现 ...

  2. 1.Java基础-面向对象编程思想(封装继承多态接口)

    封装: 1.定义:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别. 2.封装的目的是:增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的 ...

  3. 九、Java基础---------面向对象封装、继承、多态

    封装 1.1 基本概念  封装(encapsulation)是面向对象三大特征之一,它是指将对象的状态信心隐藏在对象的内部,不允许外部直接进行访问,而是通过该类提供的方法来实现对内部信息的操作和访问. ...

  4. Java基础--面向对象编程2(封装)

    1.封装的定义: 封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.  为什么需要封装?封装的作用和含义? 首先思考一个问题:当我们要 ...

  5. Java基础--面向对象编程4(多态)

    1.多态的概念 多态是指程序中的同一引用类型,使用不同的实例而执行结果不同的. 同一个类型:一般指父类 不同的实例:不同的子类实例 执行结果不同:针对同一方法执行的结果不同 package cn.sx ...

  6. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  7. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  8. Java基础-面向对象第一特性之封装(Encapsulation)

    Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...

  9. 大数据技术之_16_Scala学习_04_函数式编程-基础+面向对象编程-基础

    第五章 函数式编程-基础5.1 函数式编程内容说明5.1.1 函数式编程内容5.1.2 函数式编程授课顺序5.2 函数式编程介绍5.2.1 几个概念的说明5.2.2 方法.函数.函数式编程和面向对象编 ...

随机推荐

  1. ArcPy 创建图层空间索引

    使用Python脚本进行图层的空间索引的创建. 附上Python代码: # -*- coding: utf-8 -*- # nightroad import sys import arcpy relo ...

  2. <自动化测试方案_7>第七章、PC端UI自动化测试

    第七章.PC端UI自动化测试 UI自动化测试又分为:Web自动化测试,App自动化测试.微信小程序.微信公众号UI层的自动化测试工具非常多,比较主流的是UFT(QTP),Robot Framework ...

  3. Cannot connect to WMI Provider & Invalid class [0x80041010]

    数据库服务器(Virtual Machine)所在的Nutanix一台主机由于故障,VM自动切换到另一台主机,切换过程中VM会重新启动,但是早上检查的时候,发现点击SQL Server Configu ...

  4. go打造以太坊合约测试框架

    传送门: 柏链项目学院 1 以太坊智能合约编译 以太坊智能合约编写使用solidity语言,一般情况下我们会在remix环境下进行编译测试,在线环境相对比较稳定.如果不想用在线环境,那我们就需要自己动 ...

  5. Java 控制结构与方法

    控制结构: 控制结构是对我们程序执行顺序的一种控制,它规定了我们语句块的执行顺序和流程. 分支结构: 关系运算符和逻辑运算符: 关系运算符:== != > >= < <=逻辑运 ...

  6. memcached架构及缓存策略

    ----------------------------------------概述---------------------------------------- Memcached是一套高性能分布 ...

  7. 记录Nginx作为静态资源web服务场景配置

    server { listen   80; server_name    localhost; sendfile    on; access_log    /var/log/nginx/host.ac ...

  8. svn + nginx unit + python3自动化发布web服务方法

    本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...

  9. Fiddler分享

    链接:https://pan.baidu.com/s/162YmGb7-aUZ6xDf8eRfgpw  密码:j6er

  10. php类注释生成接口文档

    参考地址:https://github.com/itxq/api-doc-php