LAPTOP-D55DCTAO_12.08孔鹏曌

12.08

包(package)

​ 包 = 目录;类 = 文件;

定义包

​ 定义包必须在Java源文件的第一行

​ 包名需小写

​ 使用package关键字定义包:package cn.itlaobing.oop

使用包

​ 将包中的类导入至使用的地方(使用import关键字导入包)

import java.util.Arrays;

import java.util.Scanner;

import java.util.*;

系统包

​ java.lang.*此包类默认导入(String、System、Math)

​ java.util 工具包(Scanner、Random、Arrays)

​ java.io.* 输入输出(File.FilrlnputStream)

​ java.text.* 国际化程序支持包(SimpleDateFormat)

static关键字

static的使用

​ static(静态)修饰内部类、属性、方法、定义静态块;

public class Person {
    public static int live = 1;//static 修饰属性
    public static void sayHello() {//static 修饰方法
    }
    static class Student{//static修饰内部类
        String name;
    }
    static {//静态块1
    }
    static {//静态块2
    }
}

static和instances的区别

instance(实例):new出来的对象

static(静态):修饰内部类、属性、方法、定义静态块

(1)静态成员和实例成员分配内存的时机

​ 静态成员是在类名首次出现时,最先分配内存的,静态属性分配在方法区

中。然后调用静态块,多个静态块按照定义的顺序从上到下调用。

​ 实例成员是在实例化时分配内存的,如果没有实例化对象那么实例成员就没

有分配内存。

(2)静态成员和实例成员分配内存的次数

​ 静态成员只分配一次内存,因此静态成员只有一份。

​ 实例成员分配内存的次数由实例化的次数决定,每实例化一次分配一次内

存。

(3)静态成员和实例成员的调用规则

​ 静态成员由类名调用,也可以由对象名调用,但是不推荐使用对象名调用。

​ 实例成员由对象名调用,不能使用类名调用。

​ 这种调用规则是因为静态属于类成员,因此静态成员也称为类成员(类变

量,类方法);实例属性对象成员

(4)静态块的作用

​ 实例属性可以通过构造函数初始化。

​ 静态属性可以通过静态块初始化,因为类名首次出现时先为静态变量分配内

存,然后就调用静态块;

Java中的常量

​ 不可更改值得变量就是常量

​ static final修饰的变量是类变量

​ final修饰的变量是实例变量

​ final(最终):Java的关键字,可以修饰类、属性、方法;修饰类时不能被继承,修饰方法时不能被子类重写,修饰属性时不能改值;

继承

为什么使用继承

​ 代码复用,减少代码冗余,增强扩展性

​ 实质:实现多态

如何实现继承

​ 使用extends关键字实现继承

​ 子类继承父类后,子类就继承了父类中的成员,导致子类无需重新创建,简化子类的设计

super和this关键字

​ super:父类

​ this:子类

​ 必须放在代码第一行

​ super用法一:在子类构造函数中调用父类构造函数

​ 注:super在调用时,必须写在子类构造函数第一行

​ 通常父类定义的属性有父类负责初始化,子类定义的属性由子类负责初始化。子类通过super(参数列表)的方式将子类构造函数中的参数传递给父类,让父类初始化;

​ super用法二:在子类方法中调用父类的方法

继承中属性的初始化

​ 最好是谁定义属性就初始化谁

关于继承实例化问答

​ 问:main方法中创建对象c时,jvm到底创建了多少个对象?

​ 当实例化一个对象时,该对象的所有父类也都被实例化了。

​ 问:这些被实例化的对象实例化的顺序是什么?

​ 实例化顺序是从父类到子类。

​ 问:继承中构造函数的调用顺序是?

​ 从子类到父类调用

​ 问:继承中构造函数的执行顺序是?

​ 从父类到子类

标签

评论


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1