1. static关键字

static可以用来修饰的成员变量和成员方法,被static修饰的成员是属于类的是放在静态区中,没有static修饰的成员变量和方法则是属于对象的。

1.1 静态变量

​ 有static修饰的成员变量是属于类的,这种成员变量称为类变量或者静态成员变量。因为类只有一个,所以静态成员变量在内存区域中也只存在一份,所有这个类的对象都可以共享静态变量。

定义格式

修饰符 static 数据类型 变量名 = 初始值;

访问

类名.静态成员变量名

1.2 实例变量

​ 无static修饰的成员变量是属于对象的,这种成员变量称为实例变量

注意:实例变量属于对象,必须创建类的对象才可以访问。

访问

对象名.实例成员变量名

1.3 静态方法

​ 有static修饰的成员方法是属于类的,这种成员方法称为类方法或者静态方法。因为类只有一个,所以静态方法在内存区域也只存在一份,所有这个类的对象都可以共享静态方法。

访问

类名.静态方法名()

1.4 实例方法

​ 无static修饰的成员方法是属于对象的,这种成员方法称为实例方法

注意:实例方法属于对象,必须创建类的对象才可以访问。

访问

对象名.实例方法名()

2. 继承

​ 假如多个类种存在相同属性和行为时,我们可以将这些内容抽取到单独的一个类中,那么多个类就无需再定义这些相同的属性和行为,只要继承抽取出来的那个类即可。其中,多个类称为子类,被继承的类称为父类超类或者基类

2.1 继承的含义

​ 继承就是子类继承父类的属性和行为,使得子类对象可以直接具有与父类相同的属性和行为。子类可以直接访问父类中非私有的属性和行为。

继承的好处

  • 提高代码的复用性,减少代码冗余
  • 使类与类之间产生了关系

2.2 继承的使用

通过extends关键字,可以声明一个子类继承父类

格式

class 父类 {
...
} class 子类 extends 父类 {
...
}

注意:Java是单继承的,一个类只能继承一个直接父类。

子类不能继承的内容

  • 子类不能继承父类的构造方法

注意:子类可以继承父类的私有成员(成员变量、成员方法),只是子类无法直接访问私有成员,可以通过get/set方法访问父类中的私有成员变量。

2.3 使用super访问父类成员

​ 子父类中出现了同名的成员时,在子类中可以使用super关键字来访问父类中非私有的成员。

注意:super代表的是父类对象的引用,this代表的是当前对象的引用。

格式

成员变量: super.成员变量名
成员方法: super.成员方法名()

2.4 方法重写

​ 子类中出现与父类一样的方法(返回值类型、方法名和参数列表相同)时,会出现覆盖的效果,称为重写。

注意:

  • 建议所有重写都加上@Override注解,一方面可以提高代码的可读性,一方面可以防止重写出错。
  • 方法重写是发生在子父类之间的关系、
  • 必须要保证权限大于等于父类权限
  • 返回值类型、方法名和参数列表都要一致

2.5 继承后的构造方法

​ 继承之后,子类的构造方法中默认有一个super(),表示调用父类的构造方法,父类成员变量初始化后才可以给子类使用。

2.6 super(...)和this(...)

superthis访问成员

this.成员变量名
super.成员变量名 this.成员方法名()
super.成员方法名()

superthis调用构造方法

super(...); // 调用父类的构造方法
this(...); // 调用本类的其他构造方法

子类构造方法的第一行都隐含了一个super(),所以子类构造方法中可以省略super()

2.7 继承的特点

  • Java只支持单继承,不支持多继承
  • 一个类可以有多个子类
  • 可以多层继承

注意:Java中所有的类都默认继承Object类。

Java学习笔记08的更多相关文章

  1. JAVA自学笔记08

    JAVA自学笔记08 1.构造方法私有,外界就不能再创建对象 2.说明书的制作过程 1)写一个工具类,在同一文件夹下,测试类需要用到工具类,系统将自动编译工具类:工具类的成员方法一般是静态的,因此在测 ...

  2. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  3. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  4. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  5. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  6. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  7. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  8. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  9. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  10. Java学习笔记-多线程-创建线程的方式

    创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...

随机推荐

  1. RKO队——冲刺随笔(4)

    这个作业属于哪个课程 至诚软工实践F班 这个作业要求在哪里 第五次团队作业:项目冲刺 这个作业的目标 记录冲刺计划.要求包括当天会议照片.会议内容以及项目燃尽图(项目进度) 1.昨日进展 对小程序的的 ...

  2. mysql创建数据库,用户,授权基操

    # 创建数据库create database test; # 创建用户并设置密码 create user 'test'@'%' identified by '123456';# 设置密码SET PAS ...

  3. weblogic session timed out

    How to Configure Session Timeout in Weblogic Server (WLS) ?

  4. 【帆吖】Java学习零基础21

    数组 1 package array; 2 3 public class Demo1 { 4 public static void main(String[] args) { 5 int[ ] num ...

  5. redis linux源码安装

    1.官网下载安装包 2.解压 3.确认GCC环境 4.make 5.修改conf配置文件守护进程daemonize yes和默认密码requirepass password 5.启动 安装目录src/ ...

  6. JConsole连接远程Java进程

    1.Java进程启动新增如下参数 java -Djava.rmi.server.hostname=118.89.68.13 #远程服务器ip,即本机ip -Dcom.sun.management.jm ...

  7. [SUCTF 2019]EasySQL 1

    这个题目搞了我好久,由于本人基础不扎实,试了好多方法,只发现有三种情况 Nonono.无返回结果和有返回 然后使用了新学习的堆叠注入,得到了数据库名和表名 想要查看Flag表的字段内容也查看不了 这里 ...

  8. 一文快速回顾 Java 操作数据库的方式-JDBC

    前言 数据库的重要性不言而喻,不管是什么系统,什么应用软件,也不管它们是 Windows 上的应用程序,还是 Web 应用程序,存储(持久化)和查询(检索)数据都是核心的功能. 大家学习数据库时,比如 ...

  9. Android笔记--报错AUTOINCREMENT is only allowed on an INTEGER PRIMARY KEY in "create table if not exists user_info(导致APP闪退)

    问题描述 每次一运行,APP程序必定闪退,百度了发现,闪退问题绝大多数就跟sql语句有关: 看到控制台报出这样的错误: 百度发现,我忘记了最初的知识点: 在表里面,自动递增是在数据类型为Integer ...

  10. Android笔记--图形控制

    图形Drawable 形状图形(其定义文件是以shape标签为根节点的XML描述文件,支持四种类型的形状) 具体实现: 在shape标签里面,solid指定填充的颜色,stroke指定边框颜色,cor ...