前端初学java二(类、多态、接口、内部类、泛型)

目录

种类

Javabean类

测试类

工具类

类的初始化

构照函数

新建对象的内存图

static

继承

This

Super

虚方法表

@Override

修饰符权限

构造代码块

静态代码块

多态

前提

优点

缺点

示例

抽象方法

抽象类

接口

implements

继承

内部类

成员内部类

静态内部类

局部内部类

匿名内部类

Lambda表达式

泛型

泛型类

泛型方法

泛型接口


种类

Javabean类

不写main方法的类

测试类

含有main方法的类,在该类中可以调用javabean类。

一个java文件中可以定义多个class类,但只能有一个类是public修饰,而且public修饰的类型必须成为代码文件名(实际开发中建议还是一个文件定义一个class类)。

工具类

私有化构造方法,不让外界新建它的对象,成员方法需要定义为静态方便调用。

类的初始化

下面name成员变量未赋值默认值,初始化为null,这一块初始化会和数组默认初始化规律一样。

public class Student {
    String name;
    public void study() {}
}

整数类型(byte、short、int、long):默认初始化值0。

小数类型(float、double):默认初始化值0.0。

字符类型(char):默认初始化值’\u0000’空格。

布尔类型(boolean):默认初始化值false。

引用类型(类、接口、数组、String):默认初始化值null。

构照函数

构造函数和js不同(js中固定名为constructor),它使用方法名和类名完全相同,没有返回值类型也没有void,不能带有return。

如果没有定义构造方法,系统将给出一个默认的无参数构造方法。已有构造方法则不会给出默认的构造方法。构造方法也支持重构。

新建对象的内存图

Student s = new Student();
s.study()

1.加载class文件(在方法区加载,只在该类被第一次new的时候加载,后面再new会直接读取方法区中的类)

2.申明局部变量 (栈内存)

3.在堆内存中开辟一个空间

4.默认初始化成员变量(属性名中未赋值的进行默认值的初始化),

5.显示初始化成员变量(属性名中有赋值的进行赋值初始化)

6.构造方法初始化

7.将堆内存中的地址值赋值给左边的局部变量(栈内存)

8.调用类的方法,调用的是指向方法区中Student类的方法。

static

可以修饰成员方法和成员变量。

被static修饰的成员变量叫静态变量,被该类所有对象共享,可以通过对象名和类名调用(js中只能通过类名调用)。

静态变量存储在静态区(堆内存中)是随类的加载而加载。因为可以通过类名调用,所以是优先于new 对象的出现。

静态方法中无this。

继承

Java只支持单继承(只有一个父类),但可以多层继承(父类也可以继续向上继承)。

Java中所有的类都直接或间接继承于Object(和js类似都继承与Object.prototype)。

子类只能访问父类中的非私有成员。

This

表示当前方法调用者的地址值,this()表示运行本类的构造方法

Super

父类存储空间,super()表示运行父类的构造方法

子类构造方法中未显式调用父类构造方法会默认调用父类中的无参构造方法(相当于第一行中插入了super()),再执行自己。

子类构造方法中未显式调用父类构造方法必须在第一行。

super不能连续调用( super.super错的)。

虚方法表

每个类都有自己的虚方法表,它为类中非private、非static、非final的方法,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值