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. python从任意文件读取邮件地址输出的代码

    如下的资料是关于python从任意文件读取邮件地址输出的代码. # This script takes whatever you throw at stdin and outputs email ad ...

  2. redis的穿透和雪崩

    穿透: 从缓存中查询一个数据,查到为空,需要每次都去数据库中查询.而从数据库中查询出来也为空,也就不写入缓存.导致一个不存在的数每次都去数据库中查询,造成db系统很大压力 造成缓存穿透 解决:如果从数 ...

  3. Redis 由浅入深

    1.redis是什么? redis是nosql(也是个巨大的map) 单线程,但是可处理1秒10w的并发(数据都在内存中) 使用java对redis进行操作类似jdbc接口标准对mysql,有各类实现 ...

  4. 开启远程桌面连接windows的方法以及遇到的问题

    确认电脑的远程服务是否已经开启 开始--运行--输入“services.msc ”,打开服务,找到三个remote desktop开头的服务 Remote Desktop Configuration. ...

  5. 野指针与'关键字'NULL

    野指针与'关键字'NULL 一.NULL是什么? 在C/C++中的标准定义: #ifdef __cplusplus //条件编译,判断是c++还是c环境 #define NULL 0 //c++环境 ...

  6. ansible_playbook 一键搭建集群架构

    目录 基础优化 SSH.Ansible,批量管理服务项目 剧本开始-----.10分钟左右 mail.yaml base.yaml rsync.yaml nfs.yaml web.yaml tweb. ...

  7. 安装WebLogic失败,出现”[VALIDATION] [ERROR]:INST-07004: Oracle 主目录(O) 位置包含一个或多个无效字符“解决方案

    题如图 解决方案: 在管理员cmd窗口定位到jdk bin目录,然后输入以下命令 java -jar F:\java\fmw_12.2.1.3.0_wls_quick_Disk1_1of1\fmw_1 ...

  8. EntityFramework Core进行读写分离最佳实践方式,了解一下(二)?

    前言 写过上一篇关于EF Core中读写分离最佳实践方式后,虽然在一定程度上改善了问题,但是在评论中有的指出更换到从数据库,那么接下来要进行插入此时又要切换到主数据库,同时有的指出是否可以进行底层无感 ...

  9. Web后台快速开发框架

    Web后台快速开发框架 Coldairarrow 目录 目录 第1章    目录    1 第2章    简介    3 第3章    基础准备    4 3.1    开发环境要求    4 3.2 ...

  10. 遍历一个List的几种方法

    方式1.一开始是这样的: public static void test1(List<String> list) { for (int i = 0; i < list.size(); ...