JAVA学习day08 JavaSE基础——代码块、继承、方法重写和final关键字

1.1 代码块的概述和分类

  ● 代码块的概述:
   在代码块中,被{ }括起来的代码被称为代码块。

  ● 代码块的分类:
  根据代码块位置和声明的不同,可将代码块分为局部代码块、构造代码块、静态代码快、同步代码块。
  ● 常见代码块的应用:
  (1)局部代码块:在方法中出现;限定变量声明周期,早释放,以提高内存利用率。
  (2)构造代码块:在类中方法外出现;多个构造方法中相同的代码放到一块,每次调用构造都执行,并且在构造方法前执行。
  (3)静态代码块:在类中方法外出现,并且加上static 修饰,用于给类进行初始化,在加载类的时候执行,并且只执行一次。

1.2 继承的概述

  ● 继承概述:在多个类存在相同的属性和方法时,将这些内容单独抽取出来,写到一个类中去,其他的类无需再定义这些属性和方法,只需要继承这个类即可。
  ● 继承格式:
   通过 extends 关键字实现类和类的继承;class Zi extends class Fu{ }。

1.3 继承的案例:

 学生类和老师类。定义两个功能(吃饭,睡觉)

//父类
public class Person {private String name;private int age;public Person(){System.out.println("空参的构造方法");}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void eat(){System.out.println("在吃饭");}public void sleep(){System.out.println("在睡觉");}
}
//子类Teacher
public class Teacher extends Person{int jobNumber;public int getJobNumber() {return jobNumber;}public void setJobNumber(int jobNumber) {this.jobNumber = jobNumber;}public static void main(String[] args) {}
}
//子类Student
public class Student extends Person{int studentID;public int getStudentID() {return studentID;}public void setStudentID(int studentID) {this.studentID = studentID;}public static void main(String[] args) {Student student = new Student();student.setName("小明");student.setAge(20);student.setStudentID(12);System.out.println("姓名:"+student.getName());System.out.println("年龄:"+student.getAge());System.out.println("学号:"+student.getStudentID());student.eat();}
}

运行子类Student:

图 1-1 运行结果截图

1.4 继承的特点和优缺点

 ● 继承的特点:
   Java 只支持单继承,不支持多继承,但可以多层继承。

 ● 继承的优缺点:
    优点:提高了代码的复用性、维护性;让类与类之间产生了关系,这是多态的前提。
    缺点:类的耦合性增强了,这有悖于开发的原则;开发的原则:高内聚,低耦合。内聚:就是类自己完成某件事情的能力,耦合:类与类的关系。

1.5 继承的注意事项

 (1)子类只能继承父类的所有非私有成员;
 (2)子类不能继承父类的构造方法,但是可以通过super关键字访问父类的构造方法。

1.6 继承中成员变量的关系

  子类中的成员变量和父类中的成员变量重名 ;在子类中访问一个变量的查找顺序(就近原则):
    (1)在子类的局部范围找,有就使用;
    (2)在子类的成员范围找,有就使用;
    (3)在父类的成员范围找,有就使用;
    (4)如果还找不到,就报错。

1.7 this和super的区别和应用

  ● 区别:
    this 是指本类对象的引用,super 代表的是父类存储空间的标识(可以看作是父类的引用,来操作父类的成员)。
  ● 使用:
    (1)调用成员变量:this.成员变量 代表本类对象的引用;super.成员变量 代表父类的成员变量;
    (2)调用构造方法:本类的构造方法 this(…);调用父类的构造方法 super(…);
    (3)调用成员方法:this .成员方法 调用本类的成员方法;super .成员方法 调用父类成员方法。

小案例:(看程序写结果)

class Fu{public int num = 10;public Fu(){System.out.println("fu");}}class Zi extends Fu{public int num = 20;public Zi(){System.out.println("zi");}public void show(){int num = 30;System.out.println(num);System.out.println(this.num);System.out.println(super.num);}}class Test {public static void main(String[] args) {Zi z = new Zi();z.show();}}

运行结果:
 可以看到在new一个对象时,子类会先调用父类的构造方法,在子类的第一行代码系统默认有一个super();来调用父类的构造方法。

图 1-2 运行结果截图

1.8 方法重写

  ● 概述:子类中出现和父类中的一模一样的方法声明(方法名,返回值类型、参数列表),也被称为方法覆盖。
  ● 应用:当子类需要父类的方法,而方法主体有自己的特有内容时,可以重写父类中的方法。
  ● 注意事项:(1)父类中的私有方法不能被重写,私有方法根本不能被继承。
        (2)子类重写父类方法时,权限访问不能更低。
        (3)父类静态方法,子类也必须通过静态方法重写。

  案例:定义一个手机类。通过研究,我发明了一个新手机,这个手机的作用是在打完电话后,可以听天气预报。

//父类
public class Phone {public void call(){System.out.println("打电话");}public void sendMess(){System.out.println("发短信");}
}
//子类
public class newPhone extends Phone{public newPhone(){super();}public void call(){System.out.println("打电话"+"听天气预报");}
}
//测试
public class Test {public static void main(String[] args) {newPhone phone = new newPhone();phone.call();}
}

运行结果:

图 1-3 运行结果截图

1.9 final 关键字

  ● final 关键字可以用来修饰类、方法、变量和成员方法。
  ● 修饰特点:(1)修饰类:被修饰的类不能被继承;
        (2)修饰方法:被修饰的方法不能被重写;
        (3)修饰变量:变量不能被重新赋值,其实就等于一个常量。
  ● final 修饰变量:
    修饰基本类型,这个变量的值就不发生改变
    修饰引用类型,这个变量初始化之后就不能再指向别的对象了,也就是说这个变量的地址值不能再发生改变了。

JavaSE基础——代码块、继承、方法重写和final关键字相关推荐

  1. [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍

    参考链接: 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中  方法外 调 ...

  2. Java Part1 Day11继承 方法重写 super多态

    面向对象 一.内容回顾 封装;将类内部的属性隐藏private在类的内部,通过对外的公共接口(public setxxx getxxx)去操作,切薄数据的安全(合理) 实现过程:1属性私有 2封装方法 ...

  3. java方法重写和super关键字

    //java方法重写和super关键字 //在继承中,其实就是子类定义了和父类同名的方法 //就是方法,属性都是相通的 //重写限制: //被子类重写的方法不能拥有比父类方法更加严格的权限 //sup ...

  4. php中重写和final关键字的使用

    为什么把重写和final放在一起,原因就是一条:final的意思是不可更改的,也就是说final定义的东西是不可改变的,下面具体来说一下. 来看一段简单的代码: 1 class BaseClass { ...

  5. 学习-Java继承和多态之final关键字

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目:学习-Java继承和多态之final关键字. 任务:调试代码,对代码进行增添.删除和修改等操作,使得程序能够正常运行,输出结果请 ...

  6. 20面向对象三特征 之继承 方法重写 super

    继承是:多个类有重复内容,把重复内容放到一个新类中,就可以通过extends关键词去让原来的类和新类产生继承关系,子类只能拿到父类一部分信息.通过extends关键词去指明类与类之间的关系,一个父类可 ...

  7. Java面向对象之继承,方法重写,super关键字,员工类系列继承题

    在程序中,如果想声明一个类继承另一个类,需要使用extends关键字. 格式: class 子类 extends 父类 {} 继承的好处 1.继承的出现提高了代码的复用性,提高软件开发效率. 2.继承 ...

  8. java多态的两种形式_java核心(八):继承与方法重写、final、多态性的两种描述形式...

    一.继承的作用 子类继承父类的属性和方法,实现代码的复用: 子类扩充自己的标准,实现精细化的类型定义. 二.子类构造方法的限制 子类在实例化的时候,默认先实例化父类对象,然后再实例化本类对象: 子类构 ...

  9. Java基础---代码块和final关键字

    代码块 概念:用{}括起来的一段代码,在不同的位置有不同的名称,不同的作用,不同 的执行时机. 局部代码块 静态代码块 构造代码块(初始代码块.动态代码块) 局部代码块 位置:方法中 作用:限定局部变 ...

  10. java中构造代码块、方法调用顺序问题

    1. 继承的概念 继承在本职上是特殊--一般的关系,即常说的is-a关系.子类继承父类,表明子类是一种特殊的父类,并且具有父类所不具有的一些属性或方法. 2. 继承中的初始化顺序 从类的结构上而言,其 ...

最新文章

  1. C++ 笔记(34)— C++ exit 函数
  2. sql server 2008数据导入Oracle方法
  3. vue 数组删除 dome没更新_详解Vue响应式原理
  4. ASP.NET Core 2.0 : 三. 项目结构
  5. RHEL5.3下手动创建用户
  6. gartner android 市场份额,Gartner:Android去年市场份额超iOS和RIM
  7. RF无线电射频接口静电保护方案图
  8. 十、Docker快速搭建Elastic Stack(下篇)
  9. leetcode 373. Find K Pairs with Smallest Sums | 373. 查找和最小的K对数字(小根堆)
  10. CodeVS 1300 文字排版 线性DP
  11. SQL ROUND函数用法
  12. 量子计算机有哪些战略意义,世界性颠覆!量子计算机在中国诞生,对我国有五层重大战略意义!...
  13. Xshell5 破解
  14. 希捷“固件门”,影响深远啊
  15. Mac本换ssd注意事项
  16. Jquery Jqprint—借助Jquery Jqprint实现网页打印功能
  17. 7-6 计算存款利息
  18. 恐怖系列丨互联网幕后攻防:咳血的独角兽之血腥丛林中的无底线战争
  19. iphone下拉菜单卡住了_为什么苹果手机把主菜单往下拉时就会卡死
  20. python正则表达式是什么意思_理解python正则表达式

热门文章

  1. iOS商城demo、音乐播放器、视频通话、自定义搜索、转场动画等源码
  2. VS中为非控制台程序提供控制台输出窗口
  3. elasticsearch.net search入门使用指南中文版(翻译)
  4. 为您详细比较三个 CSS 预处理器(框架):Sass、LESS 和 Stylus
  5. win7下配置Apache本地虚拟主机
  6. C#string与char互转
  7. python学习笔记十——异常处理
  8. C# lock 学习
  9. [DSF] Devices Syndication Foundation Architecture V1
  10. ios 设置按钮不可见_自定义键盘InputAccessoryView在iOS中不可见11