访问控制
public
protected 同一个包的一个类和子类
default 同一个包的一个类
private
访问符 修饰符 class 类名{
属性
方法
}
可以在set 时 判断
get 对数据转换和处理
对象声明:
创建
类名 对象名 = new 构造方法();
null
给用new创造储存空间的引用变量
可以用于释放内存或不像给类分配内存
类数组
方法
访问符 修饰符 返回值类型 方法名 (参数列表){
}
staitc
值传递
引用传递
构造方法
访问符 构造方法名(){}
this.关键字
1.只在构造方法中,重名
2. this(形参列表) 来调用其他的构造方法。
可变参数:
public static int add(int a, int... b) {}
本质是一个数组。
包
包可以分隔类,所以一个包中类不能重名。
包的声明: package 包
注意:
1. 包语句必须为Java源文件的第一条非注释性语句。
2. 源文件只能指定一个包(一条package语句)
3. 多个Java源文件可以定义相同的包,这些源文件将全部位于该包下;
(编译后,形成的字节码文件(.class)都在(包名)文件夹中。
与文件目录一样,包有多级 用 '.' 分割
包的导入:
一个类可以访问其所在的包中的其他类,如果要访问其他包中的类,需要导入。
import 包名 .*; //导入指定包的所有类
import 包名 .类名; //指定类
Java常用包
java.long
包含了Java语言的核心,无需使用import语句导入
java.util
大量工具类/接口 集合框架类/接口
java.net
网络
java.io
输入/输出
java.text
格式化
java.sql
JDBC数据库
java.awt
图形用户界面(GUI)
java.swing
构建与平台无关的GUI
Java垃圾回收机制
访问权限修饰符
private 类
默认 包
protected 子类
public
如果java源文件里定义的所有的类都没有public,则文件名随意;一个public,则必须与public重名。
当需要让类只创建一个对象时,用单列类
单列类
package tiaoshi;
class Singleton{
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if(instance==null)
instance=new Singleton();
return instance;
}
}
public class Tiaoshi {
public static void main(String[] args) {
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
System.out.println(s1.equals(s2));
}
}
UML建模语言——泛化、实现、依赖、关联、聚合和组合关系 - 简书 (jianshu.com)https://www.jianshu.com/p/7189d105058a
建模语言:
继承:
实现:c++中纯虚函数
依赖:use-a
关联:c++类的包含
聚合:has-a
组成:contain-s
继承
Java是单继承
[访问符] [修饰符] class 子类名 extends 父类名 {
}
如果类没有继承其他类,默认继承Object类
继承非私有的
子类创建对象时,默认执行父类不带参的构造方法
子类可以重写继承自父类的成员变量和成员函数
如果子类中有特例,可以用方法的覆盖。
方法的重写(方法的覆盖Override)
方法名,返回值类型,参数列表相同
?子类方法抛出的异常类应该比父类更小或相等
子类访问权限比父类更大或相等
都是类方法或者都是实例方法
如果方法的参数类型有改变,则为方法的重载。
super
子类通过super调用父类的构造方法
当需要调用父类的含参构造时,用super(形参列表)
当子类和父类属性和方法同名时,会隐去父类的,如果需要,用super.属性名/.方法名.
final
变量变为常量,需初始化。
方法不可以被子类修改
类不可被继承
多态
上转型对象
父类引用变量指向其子类,可以调用子类的对象
能访问父类所有的成员变量和父类未被子类改变的方法,还可以访问到子类的子类重写父类的方法。
引用类型的强制转换
基本类型除了布尔,
只能在有继承关系的类之间
用instanceof判断是否能转换、
判断左边的对象是否为右边的类或者其子类,实例类的实例。
内部类
非静态内部类,局部内部类,静态内部类,匿名内部类
非静态内部类
类的内部定义一个类
1.通过外部类的方法调用内部类,不受访问限制
2.import导入内部类的途径,外部类.内部类,受到访问限制。
编译后文件名变为,外部类类名$内部类名.class
局部内部类
在方法中定义的类
没有修饰符
可以在该方法中继承
外部类$N 内部类.class
N为数字
静态内部类
static 类名
属于整个外部类,而不是单个外部类的对象
可以访问外部类的所有成员,外部类需要用静态方法访问或者静态内部类对象来访问。
匿名内部类