方法重载(overload)

  • 一个类中可以含有多个重名的方法。

    两同一不同

    ①同一个类

    ②同一个方法名

    ③不同参数列表:参数个数不同,参数类型不同

方法重写(override)

  • ①子类重写的方法的修饰符大于等于 父类的权限修饰符
  • ②子类不能重写父类中private的修饰符
  • ③父类的被重写的方法的返回值类型是void,则子类重写的父类中方法的返回值类型是void,

    父类的被重写的方法的返回值类型是A,则子类重写的方法返回值类型是A或A的子类

    父类的被重写的方法的返回值类型是基本类型,则子类重写的方法的返回值类型是 相同的基本类型。
  • ④子类重写的方法抛出的异常必须小于等于父类被重写的异常
  • ⑤父类被重写的方法需要是 非静态的方法,这时可以考虑重写。

四种权限修饰

修饰符 类内部 同一个包 不同包子类 同一个工程
private
(缺省)
protected
public
对于class类只能用public和缺省来修饰

javaBean

  • javaBean: 类是公共的、有一个无参的公共的构造器、有属性,且有对应的set和get方法。

代码块

  • 静态代码块:

    ①随着类的加载而执行,且只执行一次

    ②静态代码块可以定义多个,且按照声明的先后顺序执行

    ③静态代码块内只能调用静态属性、方法
  • 非静态代码块

    ①随着对象的创建而执行,创建一个对象,执行一次

    ②非静态代码块可以定义多个,且按照声明的先后顺序执行

    ③非静态代码块可以调用静态和非静态属性和方法

    没有继承的初始化顺序





    有继承的初始化顺序



class Person{
String name;
int age;
static String dec; public Person(){
} public Person(String name, int age){
this.name = name;
this.age = age;
} //静态代码块
static{
System.out.println("静态代码块");
} //非静态代码块
{
System.out.println("非静态代码块");
} public void info1(){
System.out.println("info1");
} public static void info2(){
System.out.println("info2");
}
} /** 测试
Test1
Person.dec = "abc";
则结果输出:静态代码块 Test2
Person person = new Person();
则结果输出:
静态代码块
非静态代码块 Test3 Person person = new Person();
Person person2 = new Person();
输出结果:
静态代码块
非静态代码块
非静态代码块
*/

练习一

package com.hyq;

public class Test {
public static void main(String[] args) {
new Leaf();
System.out.println();
//new Leaf();
}
} class Root{
static {
System.out.println("Root的静态代码块");
}
{
System.out.println("Root的非静态代码块");
}
public Root(){
System.out.println("Root的无参构造器");
}
}
class Mid extends Root{
static {
System.out.println("Mid的静态代码块");
}
{
System.out.println("Mid的非静态代码块");
}
public Mid(){
System.out.println("Mid的无参构造器");
}
public Mid(String msg){
this();
System.out.println("Mid的有参构造器,参数="+msg);
}
}
class Leaf extends Mid{
static {
System.out.println("Leaf的静态代码块");
}
{
System.out.println("Leaf的非静态代码块");
}
public Leaf(){
super("啦啦啦");
System.out.println("Leaf的构造器");
}
} //super没有显式写明的话,默认调用的是无参构造器。
/** 一个new Leaf()的输出结果:
Root的静态代码块
Mid的静态代码块
Leaf的静态代码块
Root的非静态代码块
Root的无参构造器
Mid的非静态代码块
Mid的无参构造器
Mid的有参构造器,参数=啦啦啦
Leaf的非静态代码块
Leaf的构造器
*/ /** 2个new Leaf()的输出结果:
Root的静态代码块
Mid的静态代码块
Leaf的静态代码块
Root的非静态代码块
Root的无参构造器
Mid的非静态代码块
Mid的无参构造器
Mid的有参构造器,参数=啦啦啦
Leaf的非静态代码块
Leaf的构造器 Root的非静态代码块
Root的无参构造器
Mid的非静态代码块
Mid的无参构造器
Mid的有参构造器,参数=啦啦啦
Leaf的非静态代码块
Leaf的构造器
*/

方法重载、方法重写、四种权限修饰、JavaBean、代码块的更多相关文章

  1. Java四种权限修饰符 在创建类中的使用

    四种权限修饰符 Java中有四种权限修饰符 public > protected > (default) >private 同一个类(我自己) YES YES YES YES同一个包 ...

  2. java 基础 四种权限修饰符

    /** * Java有四种权限修饰符: * public > protected > (default) > private * 同一个类 YES YES YES YES * 同一个 ...

  3. 阶段1 语言基础+高级_1-3-Java语言高级_02-继承与多态_第6节 权限修饰符_6_四种权限修饰符

    四种权限修饰符.从大到小 纵向再分成四种情况 同一个类 同一个类里面.private方式,可以访问到本类里面的 num成员变量 前面不写修饰符也能访问到 (default)就是不写的这种情况 受保护的 ...

  4. Java 四种权限修饰符

    Java 四种权限修饰符访问权限 public protected (default) private 同一个类(我自己) yes yes yes yes 同一包(我邻居) yes yes yes n ...

  5. Java四种权限修饰符

    四种权限修饰符

  6. Java中的四种权限修饰符及六种非访问修饰符(简识)

    一.是哪四种访问权限修饰符呢? public > protected > [default] > private (公共的 ) (受保护的) (默认的) (私有的) 二.简单认识四种 ...

  7. Java 中的四种权限修饰符

    * * private: * Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”. * 被其修饰的属性以及方法只能被该类的对象 访问,其子类不能访问,更不能允许跨包访问. * * def ...

  8. Java的四种权限修饰符

    private:仅对本类可见 缺省(不需修饰符):对本包可见 protected:对本包及所有子类可见 public:对所有类可见 修饰符: * 权限修饰符:private,默认的,protected ...

  9. java四种权限修饰符(public > protected > (default) > private)

    权限修饰符在哪里可以访问 (default) : 表示什么权限修饰符都不写 位置 public protected (default) private 同一个类 yes yes yes yes 同一个 ...

随机推荐

  1. Python数据展示 - 生成表格图片

    前言 前一篇文章介绍了推送信息到企业微信群里,其中一个项目推送的信息是使用Python自动生成的表格,本文来讲讲如何用Python生成表格图片. 选一个合适库 Python最大的优点就是第三方库丰富, ...

  2. Java语言学习day20--7月26日

    ###11抽象类的产生 A:抽象类的产生 a:分析事物时,发现了共性内容,就出现向上抽取.会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同.那么这时也可以抽取,但只抽取方法声明,不抽取方 ...

  3. 企业级 Web 开发的挑战

    本文翻译自土牛Halil ibrahim Kalkan的<Mastering ABP Framework>,是系列翻译的起头,适合ABP开发人员或者想对ABP框架进行深入演进的准架构师. ...

  4. 1.1 Qt Creater使用Python开发桌面软件的操作流程

    Qt Creater及Python的下载与安装过程不再赘述,读者可自行在网上搜索相应的下载与安装方法. 首先我们打开Qt Creater,单击"Create Project"按钮或 ...

  5. Unreal 输入系统 解析

    前言 输入系统,输入某个键,响应到GamePlay层做对应的事.例如 点击鼠标,前进还是开枪之类,是如何响应的.这里只说应用层逻辑,硬件层逻辑不讲述. 详解 1.问题来源 先看下面一个例子:跳跃的事件 ...

  6. 【Docker入门】Docker的常用命令

    ​ ​ 了解和安装完docker之后,我们学习一下docker的常用命令就和当初学linux命令一样,放心命令其实大致相同只不过细节不同. 一.Docker启动类命令 1.启动docker:syste ...

  7. MySQL8新增降序索引

    MySQL8新增降序索引 桃花坞里桃花庵,桃花庵里桃花仙.桃花仙人种桃树,又摘桃花卖酒钱. 一.MySQL5.7 降序索引 MySQL在语法上很早就已经支持降序索引,但实际上创建的却仍然是升序索引,如 ...

  8. 字符编码,存储引擎,MySQL字段类型,MySQL字段约束条件

    字符编码 查看MySQL默认编码命令:\s """ 如果是5.X系列 显示的编码有多种 latin1 gbk 如果是8.X系列 显示的统一是utf8mb4 utf8mb4 ...

  9. Golang:手撸一个支持六种级别的日志库

    Golang标准日志库提供的日志输出方法有Print.Fatal.Panic等,没有常见的Debug.Info.Error等日志级别,用起来不太顺手.这篇文章就来手撸一个自己的日志库,可以记录不同级别 ...

  10. Redis进阶知识一览

    Redis的持久化机制 RDB: Redis DataBase 什么是RDB RDB∶每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存.如果宕机重启,那么内存里的 ...