博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(Java学习)二、类和对象
阅读量:632 次
发布时间:2019-03-14

本文共 1901 字,大约阅读时间需要 6 分钟。

目录

3 类和对象

3.1 封装,构造,this,private

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
即当手动提供了更高级的构造方法的时候,系统就不再自动提供低级的构造方法。建议,每次都自己手写默认构造。

3.1.2 API

在这里插入图片描述

在这里插入图片描述

3.1.3 String和StringBuilder

在这里插入图片描述

底层原理为字节数组,byte[]

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意常量池,直接String赋值,当两个变量用该种赋值方式赋同样的值时,会指向常量池中的同一个常量。

在这里插入图片描述

equals比较字符串的内容是否相同。a.equals(b)

在这里插入图片描述
因此,建议使用StringBuilder

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3.1.4 ArrayList 集合基础

集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变。

在这里插入图片描述
在这里插入图片描述

3.2 继承

3.2.1 this, super, extends

在这里插入图片描述

extends关键字,用于继承

在这里插入图片描述

搜索变量的顺序,搜索范围不考虑父亲的父亲。
this关键字访问本类的成员变量。
访问父类的成员变量,使用super关键字,super.age

在这里插入图片描述

在这里插入图片描述

子类中的构造方法默认第一句为super(),即调用子类的构造方法时会先调用父类的构造方法,再执行子类构造方法的其它语句。

3.2.2 方法重写

在这里插入图片描述

@override注解,用来帮助检查子类方法重写父类方法的准确性

在这里插入图片描述

在这里插入图片描述
父类中的私有内容不支持重写。

子类的访问权限不能更低,public > 默认(不带权限) > 私有

在这里插入图片描述
Java不支持多继承

在这里插入图片描述

3.2.3 package 包

在这里插入图片描述

自动建包,javac -d . HelloWorld.java

在这里插入图片描述

3.2.4 修饰符

在这里插入图片描述

默认权限修饰符修饰的方法,不同包的子类没有权限调用

在这里插入图片描述

3.2.5 final

final修饰成员变量,表示该成员变量为常量,不能被再次赋值。

在这里插入图片描述
在这里插入图片描述

引用类型指除了基本类型的其它所有类型。

在这里插入图片描述

3.2.6 static

表示属性或方法是被所有对象共享的。通过类名或者对象来访问和修改

在这里插入图片描述

静态的成员方法只能访问静态的成员变量和静态的成员方法,不能访问非静态的。

因为非静态的成员变量,只有在创造实例后才会创建,而静态方法能通过类名直接访问,所有不能访问非静态变量。

在这里插入图片描述

3.3 多态

3.3.1 转型,特点,优缺点

在这里插入图片描述

父类实例指向子类对象
在这里插入图片描述
在这里插入图片描述
成员变量编译和运行都看左边(父),而成员方法编译看左边,执行看右边。因为成员方法有重写,而成员变量没有。

在这里插入图片描述

在这里插入图片描述

3.3.2 抽象类

abstract关键字,抽象方法必须在抽象类中。抽象类不能直接实例化。

在这里插入图片描述
在这里插入图片描述
不用加花括号,直接分号。
抽象类中可以有抽象方法。
抽象类可以有构造方法,用于子类实例访问父类数据的初始化。
如果子类继承的时候不想重写父类的内容,可以在子类添加关键字abstract

在这里插入图片描述

3.3.3 接口

在这里插入图片描述

创建的时候选择Interface,继承的时候关键字为implements
接口为一个抽象的内容,不能被实例化。如果子类继承的时候不想重写接口的内容,可以在子类添加关键字abstract

在这里插入图片描述

接口中的成员变量默认被final修饰,常量不能修改。而且默认是static静态的,多对象共享一份数据,可以直接通过接口名来访问。相当于成员变量默认的修饰符为public static final
接口没有构造方法。因为接口主要是对行为进行抽象,没有具体存在。
所有的构造方法默认访问的都是无参构造。所有对象都实现了Object类的方法。Object类只有一个Object()构造方法。
在这里插入图片描述
接口中只能有抽象方法。接口里面的方法默认为抽象方法,修饰符为public abstract

在这里插入图片描述

注意为@Override,O为大写

在这里插入图片描述

Java中类只能单继承,但是接口可以多继承,逗号分隔即可。extends, implements

在这里插入图片描述

在这里插入图片描述

抽象类是对事物的抽象,而接口是对行为的抽象。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
接口是不能直接实例化的,要的是该接口的实现类,即创建一个类实现该接口,将该实现类作为形参。

在这里插入图片描述

3.3.4 内部类

在这里插入图片描述
成员内部类:内部类在外部类的成员位置。
局部内部类:内部类在外部类的方法内定义,局部位置。

在这里插入图片描述

一般内部类是私有的,为了隐藏保护的内容。但是可以通过外部类的方法去构造内部类的对象。(间接调用)

在这里插入图片描述
前提:存在一个类或者接口
注意编写末尾需要分号。

在这里插入图片描述

为了方便多次调用匿名内部类的成员方法,将new出来的Inter()匿名对象赋值给i,这样便可以通过i.show()直接调用show方法。

当接口做函数的形参的时候,如果不用匿名内部类的话,需要传入实现了接口的实现类。当实现类有多种时,需要一一创建,浪费资源。而使用匿名内部类可以避免这个问题。在直接调用该函数时,写参数为new Inter(){重写接口的方法},这样就可以省去一一创建接口实现类。

在这里插入图片描述

转载地址:http://nnloz.baihongyu.com/

你可能感兴趣的文章