Java基础之static与继承(最简单最详细)

静态变量

成员变量

成员变量的特点:

随着对象的创建在堆中存在

每一个对象在内存中都会有一份成员变量

那根据成员变量的这个特点我们来想一想:

我们对一个类创建了很多对象,那每个对象都需要我们来赋值,甚至是一些重复的内容。

代码:

public class People {
    String name;
    String address;
}
public static void main(String[] args) {
        //实例1
        People p1 = new People();
        p1.name = "小明";
        p1.address = "地球";
        //实例2
        People p2 = new People();
        p1.name = "小红";
        p1.address = "地球";
        //实例...
    }

从上面代码我们看出,我们创建出一个对象后,总是要一次次进行赋值

我们发现这个居住的地方都是“地球”,那这一步一直重复效率太低,能不能有一种方法可以让相同的值只需要赋值一次呢?

答案是有,他就是static

被static修饰的成员变量就是共享的成员变量

使用场景:

对于公用的,多个对象共享的成员变量,可以使用static修饰。

static关键字

static是静态的意思,被static修饰的变量称为静态变量或类变量

格式:权限修饰符 static 数据类型 变量名;
举例:public static String country;

静态变量可以使用对象来调用,推荐使用类名来调用

静态变量内存原理

在首次创建对象之前,虚拟机需要对类进行加载。

静态变量随着类的加载而创建(此时对象还没产生),在内存中只有一份,所有对象都可以共享使用。

堆中有一块区域专门用来存放静态变量,叫做静态变量区。

静态方法

使用static修饰的方法,叫做静态方法。

格式:
修饰符 static 返回值类型 方法名() {

}

调用方式:
类名.静态方法名(); (推荐方式)
对象名.静态方法名();

继承

在有两个类有相同的属性,相同的特征,相同的方法时,这样的代码太过于冗余,既然都是同样的代码能不能搞一种简化的方式呢?

我们可以把相同的属性和行为抽离出来,定义成父类,可以提高代码复用性。

我们可以继承这个父类,获得他的属性和方法,这就是继承关系。

继承:

继承是将多个类的相同属性和行为抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承单独这个类即可使用这些属性和行为了。

格式:
格式:public class 子类名 extends 父类名 {

}

优点:
继承的出现减少了代码冗余,提高了代码的复用性。

继承更有利于功能的扩展,子类继承一个父类就得到了父类的功能了。

继承的特点

Java只支持单继承,不支持多继承,但支持多层继承。

意思就是:
单继承:一个儿子不能有两个爸爸,只能有一个爸爸

多层继承:
儿子有一个爸爸,爸爸也有一个爸爸

这样儿子既有爸爸的特点,又有爷爷的特点

子类是否可以继承父类的私有成员 ?

可以继承,但是子类不能直接访问。父类私有成员只能在本类中使用。

子类是否可以继承父类的构造方法?


不可以。构造方法名必须和类名相同,如果子类可以继承父类构造方法,将和语法规定产生矛盾。

super关键字

super代表父类空间,通过super可以调用到父类中的属性和方法

如果父类和子类中,出现了相同的成员方法,也会优先使用子类的,如果一定要使用父类的方法,也是使用super关键字。

super.父类成员方法( );

子类创建对象的特点

特点:子类对象创建时,默认先执行父类的无参构造方法。
原理:在子类的所有构造方法的第一行,默认有super(),表示调用父类的无参构造方法。

如果父类中没有无参构造器会报错。因为子类默认是调用父类无参构造器的。

子类可以调用父类带参构造器来初始化父类的数据。

格式:在子类构造器第一行,添加 super(参数) 代码。

注意:只能在子类构造方法的第一行去调用父类构造方法。

方法重写

子类中对父类已有的方法重新实现功能。

当子类和父类有相同的功能,但父类的该功能不满足子类的需求时,子类可以重写父类中的方法。

方法名、参数列表、返回值类型都保持不变。

子类重写后的方法,访问权限要大于等于父类方法的权限。

(权限从小到大: private、缺省不写、protected、public)

私有方法和静态方法不能被重写。

修饰符作用范围

在这里插入图片描述

最后

如果你对本文有疑问,你可以在文章下方对我留言,敬请指正,对于每个留言我都会认真查看。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
目 录 第一章 JAVA入门 10 计算机语言发展史 10 机器语言 10 汇编语言 10 高级语言 10 其他高级语言 11 JAVA发展简史 12 JAVA为什么能够流行? 13 JAVA各版本的含义 13 JAVA技术体系架构 14 JAVA的特性和优势 14 JAVA应用程序的运行机制 15 JVM(JAVA VIRTUAL MACHINE) 16 Java运行时环境JRE(Java Runtime Environment) 17 JAVA语言应用范围 18 第一个JAVA程序 18 JAVA开发环境搭建 18 一个典型的JAVA程序的编写和运行过程 19 第一个程序常见错误 20 第一个JAVA程序的总结和提升 20 常用Java开发工具 20 常用dos命令 21 本章笔试作业 21 本章上机操作 21 第二章(1) 编程的基本概念 22 注释 22 标识符 22 关键字/保留字 23 变量(variable) 24 常量(Constant) 25 命名规则(规范) 25 基本数据类型(primitive data type) 26 整型变量 26 浮点型 27 字符型(2个字节): 28 boolean类型 29 运算符(operator) 29 二元运算符 29 一元运算符 30 布尔逻辑表达符 30 位运算符 30 扩展运算符 31 字符串连接符 31 三目条件运算符 31 运算符优先级的问题 31 自动类型转换 32 基本类型转化时常见错误和问题 33 方法 33 简单的键盘输入和输出 33 本章思考作业 34 上机操作 34 第二章(2) 控制语句 35 顺序结构 35 选择结构 35 if单选择结构 35 if-else双选择结构 35 If-elseif-else多选择结构 36 switch多选择结构 37 循环结构 39 While和dowhile的区别 41 For循环 42 break语句和continue语句 47 语句块 48 递归结构 49 本章作业 50 本章上机操作 51 第三章 JAVA面向对象程序开发 52 编程语言发展史 52 类和对象是如何产生发展的?如何进化的? 52 面向对象思想初步(OOP初步Object Oriented Programming) 53 面向对象编程的语言的三大特征简介 56 对象和类的概念 56 类和对象初步 57 测试类的定义方式 57 简单的学生类编写示例 58 内存分析 59 属性(field,或者叫成员变量) 59 引用类型 60 类的方法 60 对象的创建和使用 60 构造器(或者叫做构造方法,constructor) 60 垃圾回收机制(Garbage Collection) 63 方法的重载(overload),构造方法的重载 63 this关键字 65 static 关键字 66 静态初始化块(经常用来初始化类,加载类信息时执行!) 67 package 68 JDK中的主要包 68 import 68 eclipse的使用 69 继承(extend, inheritance) 70 为什么需要继承继承的作用? 70 继承介绍 70 如何实现继承? 70 继承使用要点 71 Object类 72 toString方法 72 equals方法 73 super关键字 74 方法的重写(override) 74 隐藏/封装(encapsulation) 75 为什么需要封装?封装的作用和含义? 75 使用访问控制符,实现封装 76 封装的使用细节 76 多态(polymorphism) 76 为什么需要多态? 76 如何实现多态? 77 方法绑定(method binding) 77 静态绑定 77 动态绑定 77 多态的使用要点 78 对象的转型(casting) 79 final 81 抽象类 82 抽象类的使用要点 83 接口 83 为什么需要接口? 84 如何定义接口? 84 接口的本质探讨 84 接口使用要点 85 接口的多继承 86 面向接口编程 87 OOP更多应用 87 组合 87 内部类(innerclasses) 88 字符串(java.lang.String类)的使用 90 字符串相等的判断 92 思考作业 93 上机作业 94 第四章 异常机制 95 导引问题 95 异常(Exception)的概念 96 异常分类 96 Error 97 Error和Exception的区别 97 Exception 97 异常的处理办法之一,捕获异常 99 try块 99 catch 99 finally 100 try, catch,finally ,return 执行顺序 100 异常的处理办法之二,声明异常:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值