继承extends ,this super final 关键字,abstract抽象类,override方法重写
继承extends
私有成员不能被继承
总结:子类方法中,使用变量的原则是:就近原则
1 package review06; 2 /* 3 私有成员不能被继承 4 子类和父类有同名的成员变量:在子类的方法中,优先使用子类的成员变量 5 当子类的方法中有和成员变量重名的局部变量时,优先使用局部变量 6 总结:子类方法中,使用变量的原则是:就近原则 7 8 */ 9 class Father{ 10 private int num = 10;//私有成员变量不能被继承 11 int num1 = 11; 12 public void method(){ 13 int num2 = 2; 14 System.out.println(num2); 15 } 16 } 17 class Son extends Father{ 18 int num1 = 12; 19 public void show(){ 20 num1 = 13; 21 System.out.println(num1); 22 } 23 } 24 public class ExtendsDemo2 { 25 public static void main(String[] args) { 26 Son s = new Son(); 27 s.show(); 28 s.method(); 29 30 } 31 }
继承extends
this super final 关键字
this只能用于方法方法体内。当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this。并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
super 关键字 父类对象内存空间的标识
子类创建对象时,为什么还需要把父类也在一片空间中创建出来???
就是由于子类对象有可能使用到父类的成员变量,
而父类的成员必须在堆内存中存在,所以父类对象必须被首先创建出来
而这个过程是虚拟机自动完成的./*
super的应用
构造方法不能被继承
super(...):显式的去调用父类的带参构造方法
子类的所有构造方法,默认情况下,第一条语句都是super();
一旦父类提供了任何构造方法,就没有默认的空参构造,super()出错.
解决方法:
1.手动提供空参构造
2.使用super调用父类的其它构造方法
*/
final 修饰类:终极类,不能被继承
final 修饰成员方法:不能被覆盖(重写)
final 修饰变量:只能被赋值一次(自定义常量)
final修饰的有三个地方可以赋值:
1.定义的时候就赋值
2.构造代码块中赋值
3.构造方法中赋值
abstract抽象类
抽象类:包含抽象方法的类就是抽象类
抽象方法是子类自己去实现,而父类只规定方法签名.
//实现子类
//子类如果是非抽象类的话,那么一定要实现父类中所有的抽象方法,
//但是,如果子类也是抽象类,那么可以不实现父类中所有的抽象方法
Animal dog2 = new Dog();
//dog2.show1();//向上造型,创建的对象,子类中的特有方法无法调用
1 /* 2 抽象类:包含抽象方法的类就是抽象类 3 抽象方法是子类自己去实现,而父类只规定方法签名. 4 5 */ 6 7 abstract class Animal{ 8 abstract void run(); 9 } 10 11 class Dog extends Animal{ 12 void run(){ 13 System.out.println("Dog run"); 14 } 15 } 16 17 class Cat extends Animal{ 18 void run(){ 19 System.out.println("Cat run"); 20 } 21 } 22 23 public class AbstractDemo1{ 24 public static void main(String[] args){ 25 Dog d = new Dog(); 26 d.run(); 27 Cat c = new Cat(); 28 // c.run(); 29 } 30 }
abstract抽象类
override方法重写
子类出现和父类方法签名一模一样的方法时,父类的方法被覆盖,可以super显式调用
静态方法中不能出现super/this关键字
1 /* 2 子类出现和父类方法签名一模一样的方法时,父类的方法被覆盖,可以super显式调用 3 4 */ 5 class Father{ 6 private void show(){ 7 System.out.println("Father show()"); 8 } 9 void method(){ 10 System.out.println("Father method()"); 11 } 12 static void function(){ 13 System.out.println("Father function()"); 14 } 15 } 16 class Son extends Father{ 17 private void show(){ 18 System.out.println("Son show()"); 19 } 20 void method(){ 21 super.method();// 22 System.out.println("Son method()"); 23 } 24 static void function(){ 25 // super.function();//静态方法中不能出现super/this关键字 26 System.out.println("Son function()"); 27 } 28 } 29 public class OverrideDemo1{ 30 public static void main(String[] args){ 31 Son s = new Son(); 32 s.method(); 33 s.function(); 34 } 35 }
override方法重写
转载于:https://www.cnblogs.com/star521/p/8742888.html
继承extends ,this super final 关键字,abstract抽象类,override方法重写相关推荐
- Java查漏补缺(08)关键字:static、单例设计模式、理解main方法、类的成员之四:代码块、final关键字、抽象类、接口、内部类、枚举类、注解、包装类
Java查漏补缺(08)关键字:static.单例设计模式.理解main方法.类的成员之四:代码块.final关键字.抽象类.接口.内部类.枚举类.注解.包装类 本章专题与脉络 1. 关键字:stat ...
- 学习-Java继承和多态之final关键字
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目:学习-Java继承和多态之final关键字. 任务:调试代码,对代码进行增添.删除和修改等操作,使得程序能够正常运行,输出结果请 ...
- Java关键字详解this、private、static、super、extends继承、instanceof、final、abstract、interface、implements、enum...
1,this //在方法中出现了局部变量和成员变量同名的时候,可以在成员变量名前面加上this.来区别成员变量和局部变量. //1.在构造调用另一个构造函数,调用动作必须置于最起始的位置,即this( ...
- JavaSE——面向对象高级(继承、final关键字、抽象类与接口、多态、Object类、内部类、包装类、可变参数)
第3节 面向对象高级 一.继承 1.1 概述和使用 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类.继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法 ...
- 继承extends、super、this、方法重写overiding、final、代码块_DAY08
1:Math类的随机数(掌握) 类名调用静态方法. 包:java.lang 类:Math 方法:public static double random(): Java.lang包下的类是不用导包就可 ...
- java super extends_Java继承extends与super关键字
版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创! 恰饭广告 函数也称为方法! 继承:在java中使用extends关键字来表示继承关系.super用来继承父类方法和参数. 继 ...
- java 抽象类 final_Java8 final关键字与抽象类
final关键字 最终无法改变的 final修饰的变量如果是成员变量没有默认初始值,如果修饰局部变量可以只声明不初始化 final 修饰类 方法 变量 final 修饰类:不能被继承 不能有子类 fi ...
- day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上/下造型,main方法,抽象类,接口,设计模式,异常,内部类
1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...
- day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上_下造型,main方法,抽象类,接口,设计模式,异常,内部类
1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...
最新文章
- 自监督学习(Self-Supervised Learning)多篇论文解读(上)
- 4、jQuery实现的全选、反选和不选功能
- 获得 bootstrapTable行号index
- typescript安装、数据类型及tsconfig配置项说明
- xor方程组消元 UVA 11542 Square
- [react] 简要描述下你知道的react工作原理是什么?
- t检验的p值对照表_论文数据分析实战 | 如何对汇总数据进行t检验
- cad填充图案乱理石_CAD绘图,缺少填充图案怎么办?900多种自定义图案可解燃眉之急...
- surf算子匹配物体
- WIFI篇(1.windows下的CMD命令)
- 架构之美读书笔记之三
- 算法竞赛入门经典训练指南 pdf
- 使用C#存储数据时excel有Microsoft切换到了wps时的引用
- Eclipse启动Tomcat 警告: 基于APR的本地库加载失败.错误报告为
- AT91SAM9260开发板
- 机械键盘各种设定(品牌:黑爵等)
- 服务器托管单线、双线以及多线如何区别
- 2019清明期间qbxt培训qwq
- (菜鸟教程)Java分支结构程序设计----if语句的使用
- 标准化作业指导书的作用是什么?如何制作标准化作业指导书?
热门文章
- PAT (Basic Level) Practice (中文)1005 继续(3n+1)猜想 (25 分)
- Netty实战 IM即时通讯系统(九)实现客户端登录
- 可变参数的使用之va_arg的陷阱s
- 【Qt】2D绘图之复合模式
- 火币网的macd怎么算的_黄金投资中MACD的计算方式
- docker重启mysql数据丢失_mysql如何确保数据不丢失的?我们借鉴这种设计思想实现热点账户高并发
- 叉乘点乘混合运算公式_初中数学学不会?公式这样记,让你做题效率翻倍!
- 307 跳转会携带请求方法吗_面试官:GET和POST两种基本请求方法有什么区别
- php表达式生成工具,thinkPHP5.0数据查询表达式生成技巧
- Promise对象的创建与使用