IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> javase核心知识 -> 正文阅读

[Java知识库]javase核心知识

面向对象特点及缺点

网上有的说是四大特征,其中还有抽象。
但三大特征 封装 继承 多态。这三大支柱已经囊括抽象了,譬如说接口,或者抽象类的定义。

  1. 封装:所谓封装,就是将客观事物封装成抽象的类,并且类可以把数据和方法让可信的类或者对象进行操作,对不可信的类或者对象进行隐藏。类就是封装数据和操作这些数据代码的逻辑实体。

  2. 继承:继承有两种,一种是实现继承,另外一种是接口继承。实现继承可以直接使用基类的属性和方法而无需额外编码,接口继承是指使用属性和方法的名称,但是子类必须提供实现的能力。

  3. 多态:所谓多态就是对一个实例的相同方法在不同的情形下有不同的表现形式。多态机制使得不同内部结构的对象可以共享相同的外部接口,这就意味着,虽然不同的类的内部操作不同,但可以通过一个公共的类,它们可以通过相同的方式予以调用。

缺点

属性的多重指针的引用牺牲了系统性能。

类和继承等特点使得程序会多很多指针操作来定位函数入口和自身要维护虚拟方法表等额外的工作,程序的处理效率相对要低(但程序开发效率高)。所以现在单纯的C语言还是大为用武之地的。

但随着科技的进步,CPU和内存的性能也突发猛进。由原来的1核到8核,内存16M和现在的16G,所以程序的效率多多少少会随着硬件的性能变得更好。你可以发现很多大的项目也开始由C转而变成让c++和JAVA等面向对象来写了。

java关键字和修饰符

权限修饰符

publicprotecteddefaultprivate
同一类中
同一包中
不同包的子类
不同包中的无关类

static

被static修饰的变量或者方法,该类的所有对象都可以使用,和对象无关,依赖于类,内存中只有一份。

静态可以调用静态,但是不能调用非静态,非静态可以调用静态;
因为静态的内容是随着类而产生的,非静态的内容是随着对象而产生的;
静态在前,非静态在后;静态产生的时候还没有非静态。

final

不可改变

  1. 被修饰的类,不能被继承。
  2. 被修饰的方法 ,不能被重写。
  3. 被修饰的变量,不能被重新赋值。
    • 局部变量为基本类型,值是不能更改的,只能赋值一次
    • 局部变量为引用类型,地址值不能更改,内容可以更改

abstract和final不能被同时使用,abstract要求子类覆盖重写所有方法,final修饰的方法不能被重写。

instance

判断类是什么类型,返回的是bool

继承

向上抽取共性,将共同的内容定义在父类

java只能单继承,不能多继承,支持多层继承

好处

  1. 让类与类之间产生了关系
  2. 提高了代码的复用性
  3. 是多态的前提

特点

  1. 子类可以使用父类中除了 private和构造方法 以外的内容
  2. 当子类和父类成员变量不重名时,子类有,使用自己的,子类没有,使用父类的
  3. 当子类和父类成员变量重名时,访问父类的需要super.

重写和重载

方法重载

同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,和修饰符和返回值类型无关

  • 参数列表:个数不同,数据类型不同,顺序不同。

方法重写

子类与父类中出现重名的成员方法;

返回值类型、方法名、参数列表都相同(最简单的也是最常用的重写);

声明不变,重新实现。

注意:
子类方法重写父类方法,子类方法权限必须大于等于父类
子类方法重写父类方法,子类方法返回值必须小于等于父类

抽象类

没有方法主体的方法;

java语法规定,包含抽象方法的类就是抽象类。

抽象类的注意事项

  1. 抽象类不能直接创建对象,只能创建非抽象子类的对象。
  2. 抽象类中必须有构造方法,是供子类创建对象时,初始化父类成员使用的。
  3. 抽象类中不一定包含抽象方法,都有抽象方法的类必定是抽象类
  4. 抽象类的子类,必须重写抽象父类的所有方法,否则,编译报错,除非子类也是抽象类

接口

  1. 接口中可以定义抽象方法、默认方法、静态方法

  2. 接口中定义方法的时候,前面的public abstract可以省略,抽象方法不能省略。

  3. 一个类只能单继承,却可以实现多个接口,接口可以多继承。

  4. 接口中的成员变量只能是常量,且必须赋值。常量的名字建议大写,单词用_隔开

多态

多态的前提

  1. 继承或者实现
  2. 方法的重写(不重写,无意义)
  3. 父类引用指向子类对象

成员变量还是就近原则,父类和子类中有无,也不会引起编译错误。

当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写后的方法。
如果需要执行子类的特有方法时,父类中并没有子类的方法,此时需要向下转型。
向下转型的时候,可以转到父类的任何一个子类中,编译不会报错,但此时new的子类与强转的类的类型可能是不一致的,就会发生强制类型转换异常,可以使用instanceof提前判断类的类型

内部类

在描述事物时,若一个事物内还包含其他事物,就可以使用内部类这种结构。

成员内部类

内部类可以直接访问外部类的成员,包括私有成员。

// 调用成员内部类
Person s = new Person();
Person.Heart h = s.new Heart();

匿名内部类

创建子类/实现类对象的一种快捷方式

package com;

public interface Zi {

    int num = 5;

    void sing();
}



package com;

public class TestJava {

    public static void main(String[] args) {

        Zi zi =  new Zi() {
            @Override
            public void sing() {

            }
        };
    }
}

部分知识引用自:
https://baijiahao.baidu.com/s?id=1614769568984126810&wfr=spider&for=pc(java的方法中是引用传递还是值传递)
https://www.nowcoder.com/questionTerminal/a90230b35b5f4a7287f779ecdd88841d
https://blog.csdn.net/u010945925/article/details/9050917

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:14:49  更:2022-02-28 15:19:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:35:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码