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到底创建了多少个对象?
当实例化一个对象时,该对象的所有父类也都被实例化了。
问:这些被实例化的对象实例化的顺序是什么?
实例化顺序是从父类到子类。
问:继承中构造函数的调用顺序是?
从子类到父类调用
问:继承中构造函数的执行顺序是?
从父类到子类
近期评论