1.继承比较好理解,多各类有相同的属性和行为的时候,将这些内容抽取到一个单独的类中就可以简化成继承关系了
1)表达式:class 子类名 extends 父类名 {}
2)好处:a.提高了代码的复用性,b.提高了代码的维护性,c.让类与类产生关系,是多态的前提。
3)Java只支持单继承,不支持多继承,但可以多层继承。
4)子类只能继承所有父类的非私有成员,不能继承父类的构造方法,但是可以通过super关键字去访问父类的构造方法。
5)继承中成员变量的关系:
当子类中的成员变量和父类中的成员变量名称一样时,在子类方法中访问一个变量的查找顺序:
a:在子类方法的局部范围找,有就使用
b:在子类的成员范围找,有就使用
c:在父类的成员范围找,有就使用(肯定不能访问到父类局部范围)
d:如果还找不到,就报错。
2.this和super的区别?
this代表本类对应的引用。
super代表父类存储空间的标识(可以理解为父类引用,可以操作父类的成员)

用法上
1)调用成员变量

            this.成员变量 调用本类的成员变量super.成员变量 调用父类的成员变量

2)调用构造方法

            this(...)   调用本类的构造方法super(...)  调用父类的构造方法

3)调用成员方法

            this.成员方法 调用本类的成员方法super.成员方法 调用父类的成员方法

注意:super(…)或者this(….)必须出现在第一条语句上,否则,就会有父类数据的多次初始化

3.继承中构造方法的关系
子类中所有的构造方法默认都会访问父类中空参数的构造方法

        因为子类会继承父类中的数据,可能还会使用父类的数据。所以,子类初始化之前,一定要先完成父类数据的初始化。注意:子类每一个构造方法的第一条语句默认都是:super();

4.执行流程,判断结果

class Fu {static {System.out.println("静态代码块Fu");}{System.out.println("构造代码块Fu");}public Fu() {System.out.println("构造方法Fu");}
}class Zi extends Fu {static {System.out.println("静态代码块Zi");}{System.out.println("构造代码块Zi");}public Zi() {System.out.println("构造方法Zi");}
}class ExtendsTest2 {public static void main(String[] args) {Zi z = new Zi();}
}

执行结果是:

       静态代码块Fu  静态代码块Zi构造代码块Fu构造方法Fu构造代码块Zi构造方法Zi

1)一个类的静态代码块,构造代码块,构造方法的执行流程
静态代码块 > 构造代码块 > 构造方法
2)静态的内容是随着类的加载而加载
静态代码块的内容会优先执行
3)子类初始化之前先会进行父类的初始化

5.方法重写
子类中出现了和父类中一模一样的方法声明,也被称为方法覆盖,方法复写。

6.方法重写的注意事项
1)父类中私有方法不能被重写
2)子类重写父类方法时,访问权限不能更低
3)父类静态方法,子类也必须通过静态方法进行重写。(其实这个算不上方法重写,但是现象确实如此,至于为什么算不上方法重写,多态中我会讲解)

7.方法重载能改变返回值类型吗?
方法重载能改变返回值类型,因为它和返回值类型无关。
Override:方法重写
Overload:方法重载

8.final关键字是最终的意思,可以修饰类,成员变量,成员方法。
特点:
1)final可以修饰类,该类不能被继承。
2)final可以修饰方法,该方法不能被重写。(覆盖,复写)
3)final可以修饰变量,该变量不能被重新赋值。因为这个变量其实常量。
自定义常量 final int x = 10;

9.final修饰局部变量
1) 在方法内部,该变量不可以被改变
2) 在方法声明上:
基本类型,是值不能被改变
引用类型,是地址值不能被改变
10.多态
某一个事物,在不同时刻表现出来的不同状态。
多态前提和体现
1)有继承关系
2) 有方法重写
3) 有父类引用指向子类对象

11.多态中的成员访问特点:
1)成员变量
编译看左边,运行看左边。
2)构造方法
创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化。
3)成员方法
编译看左边,运行看右边。
由于成员方法存在方法重写,所以它运行看右边。
4)静态方法
编译看左边,运行看左边。
(静态和类相关,算不上重写,所以,访问还是左边的)
12.多态的好处
1)提高了程序的维护性(由继承保证)
2)提高了程序的扩展性(由多态保证)

13.多态的弊端: 不能使用子类的特有功能。
所以为了引用子类的特有功能,把父类的引用强制转换为子类的引用
对象间的转型问题:
向上转型:
Fu f = new Zi();
向下转型:
Zi z = (Zi)f; //要求该f必须是能够转换为Zi的。

14.自己在默写代码时出现的错误

/*多态练习:猫狗案例
*/
class Animal
{public void eat(){System.out.println("进食");}
}
class Cat extends Animal
{public void eat(){System.out.println("吃鱼<?)))><<");}public void playGame(){System.out.println("玩毛线,抓蝴蝶");}
}class Dog extends Animal
{public void eat(){System.out.println("吃骨头@==@");}public void lookDoor(){System.out.println("有人来了,汪汪~~");}
}class PolymorphismTest  //  polymorphism:多态性
{public static void main(String[] args){  /*第一次编译又忘了打这一句,看来以后防止自己再忘,写代码是首先写主方法*/Animal a = new Cat();a.eat();Cat b = (Cat)a;b.eat();b.playGame();  /*a.playGame();// 错误:变量a的类型为Animal*/System.out.println("---------------");a = new Dog();a.eat();Dog c = (Dog)a;c.eat();c.lookDoor();}
}

009Java知识点小结--继承和多态相关推荐

  1. Java常见面试知识点:继承、接口、多态、代码块

    问题:Java常见面试知识点:继承.接口.多态.代码块 答案: 1.继承 继承中构造方法的访问特点 子类中所有的构造方法默认都会访问父类中无参的构造方法 为什么? • 子类在初始化的时候,有可能会使用 ...

  2. BookCollectionSoftware - 图书管理(知识点糅合::类,对象,抽象类,接口,封装,继承,多态,顺序表)- java - 细节狂魔

    文章目录 前言 图书管理应实现的功能 准备工作 开始操作 先在book包,创建一个Book类,用来存储一本书的信息 小技巧: 根据小技巧来创造我们的 构造方法,公开的输入输出的接口,,还要重写的toS ...

  3. 面向对象、继承、多态、封装、匿名内部类的基本知识点复习总结

    1.面向对象 概述:一种编程思想,强调的谁来做事情,强调的是结果 面向对象的好处:1.更符合人类的思想习惯:做事情的时候先去get工具,get对象2.复杂的问题简单化3.执行者变成了指挥者 面向过程是 ...

  4. 【c#】继承和多态的一点知识点

    目录 简要说明继承和多态: 继承: 继承的特点: [访问基类base的用法]: 使用new关键字隐藏(重写)基类成员 密封类与抽象类与[虚方法] 重写和重载的区别 多态: 静态多态性: 动态多态性: ...

  5. C++基础知识点小结

    C++基础知识点小结 第一章 绪论 (1)cout 输出流的对象 (2)cin输入对象 (3)endl 输出控制符/操控符 (4)标识符 (5)命名空间(namespace) (6)左值: (7)右值 ...

  6. 2020年Android面试高频知识点小结+9家公司面试真题

    作者:小羊子说 前言 正直2020金九银十,第一次换工作或是面试候选人,我们都会对面试知识做一次总结梳理,毕竟开发技术无边界,不同人对技术的解读不同.文章总结了最近大半年中的面试考查点V1.0,希望对 ...

  7. 面向对象的三大特性(封装、继承、多态)

    继承 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class ...

  8. python有什么用处案例_用实例解释Python中的继承和多态的概念

    在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Base class.Supe ...

  9. python 继承和多态

    python 继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类(Ba ...

  10. Python面对对象编程——结合面试谈谈封装、继承、多态,相关习题详解

    1.面向对象的三大特征 封装:属性和方法放到类内部,通过对象访问属性或者方法,隐藏功能的实现细节.当然还可以设置访问权限; 继承:子类需要复用父类里面的属性或者方法,当然子类还可以提供自己的属性和方法 ...

最新文章

  1. usaco前两章小结
  2. fflush函数的深入理解
  3. 推理成本降低48倍!1张GPU就能让静态图像动起来 | 格拉兹科技大学Facebook
  4. html文章整体居中,div居中与div内容居中
  5. Mysql 优化器内部JOIN算法hash join On-Disk Hash Join Grace Hash Join Hybrid hash join过程详解
  6. python基础学习——函数和方法的区别与联系
  7. 廖雪峰 练习 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字...
  8. 15分钟从零开始搭建支持10w+用户的生产环境(三)
  9. 嵌入式linux clion,跨平台IDE集成开发环境Clion教程:嵌入式开发
  10. 人工智能数学基础之高等数学
  11. 7-7 旅游规划 (25 分)
  12. tomcat服务器配置优化
  13. [Android] 环境配置之正式版Android Studio 1.0
  14. 2021谷歌年度AI技术总结 | Jeff Dean执笔万字展望人工智能的5大未来趋势!
  15. 德马克机械波中shift over to right的意思
  16. python使用numpy的np.mod函数计算numpy数组除以某一特定数值剩余的余数(remainder)、np.mod函数和np.fmod函数对负值的处理方式有差异
  17. Java知识点(三)
  18. WebMagic爬取码市、猪八戒、一品威客外包数据
  19. 苏嵌//张福辉//2018.7.11
  20. uni-app 上下滑动左右滑动

热门文章

  1. 李白的诗-按时间顺序的创作
  2. envi栅格图像镶嵌_影像镶嵌(基于像素的图像镶嵌)
  3. Log4j整合阿里云日志服务
  4. 跨国面板数据(1960-2020)二:国民核算、经常账户、贸易、fdi、运输旅游、保险金融(stata版)
  5. 变分法 (Calculus of Variations)
  6. JS 格林威治时间格式(GMT)与普通时间格式的互相转换
  7. 操作系统(一)——绪论
  8. 天津学习平面设计培训需要学习多久?
  9. ols残差_多元回归方程的OLS残差
  10. ESXi创建的虚机只能ping通自己IP无法ping通网关的问题排查