LENOVO-PC_刘甲波12.9
包
包是管理类和接口的,还可以解决命名冲突,类和接口需要定义在包中。
包=目录
类=文件
包:package
包的定义
定义包的语法格式如下:
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, FileInputStream
java.text.*国际化程序支持包。SippleDateFormat
关键字
static的使用
static翻译成静态
static可以修饰内部类,属性和方法,定义静态块。
static修饰的属性称为静态属性或类变量,没有用static修饰的属性称为实例变量。使用static修饰的属性属于类不属于对象,类属性在类名首次出现时初始化,即使没有创建对象,类属性也是出现的。
static和instances(实例)的区别
(1)静态成员和实例成员分配内存的时机
静态成员在类名首次 出现时,最先分配内存的,静态属性分配在方法去中。然后调用静态块,如果有多个静态块,那么则按照从上到下的顺序执行。
实例成员是在实例化时分配内存的,如果没有实例化对象则实例成员就不分配内存。
(2)静态成员和实例成员分配内存的次数
静态成员只分配一次内存,因此静态成员只有一份。
实例成员分配内存的次数由实例化的次数决定,每实例化一次就分配一次内存。
(3)静态成员和实例成员的调用 规则
静态成员由类名直接调用,也可以由对象名调用,但不推荐使用对象名来调用。
实例成员由对象名调用,不能使用类名调用。
这种调用规则是因为:
静态属于类成员,因此静态成员也称为类成员(类变量,类方法)
实例属性属于对象成员
(4)静态块的作用
实例属性可以通过构造函数初始化。
静态属性也可以通过静态块进行初始化,因此类名首次出现时就给静态变量分配内存,然后就调用静态块。
java中的常量
值不可以改变的变量称为常量
使用static final修饰的变量是类常量
使用final修饰的变量称为实例常量
final是java的关键字,翻译为最终。final可以修饰类,属性,方法。修饰类时类不能被继承,修饰属性时不能改值,修饰方法时不能被子类重写。
继承
继承的基本概念
继承是面向对象的三大特征之一。
extends是继承的关键字。
继承可以解决程序中代码冗余的问题,是实现代码复用的重要手段之一。
继承的语法规则如下:
[访问修饰符] class 子类名 extends 父类名{
子类成员变量
子类成员方法
}
子类继承符类后,子类就继承父类中的成员,导致子类无需从新创建,简化了子类的设计。
super与this关键字
super表示父类
this表示子类
super调用父类的构造方法:super(参数);
例如:
public PersonnelDept(String name, String responsibility, String manager,int count) {
super(name,responsibility,manager);
this.count = count;
}
super调用父类构造方法时,必须写在子类构造函数的第一行。
super只能在子类中,而不是其他位置。super是用于访问符类成员的。
super调用父类的方法:
例如
public String toString() {
return super.toString()+"count="+ count;
}
继承中对象的实例化的顺序问题
class A{
int a;
public A(int a) {
this.a = a;
}
}
class B extends A{
int b;
public B(int a,int b) {
super(a);
this.b = b;
}
}
class C extends B{
int c;
public C(int a,int b,int c) {
super(a,b);
this.c = c;
}
}
public class D {
public static void main(String[] args) {
C c = new C(1, 2, 3);
c.a= 1;
}
}
问题:main方法中创建对象c时,jvm到底创建了多少个对象?
答:当 实例化一个对象时,该对象的所有父类也都被实例化了。
问题:这些被实例化的对象实例化的顺序是什么?
答:实例化的顺序是从父类到子类。
问题:继承中构造函数的顺序是?
答:从子类到父类调用
问题:继承中构造数的 执行顺序是?
答:从父类到子类
评论