本文内容来自于幕课网《Java入门第二季》,点击打开链接 比起第一季的笔记更加完整了,主要介绍内容有:类和对象(定义类、变量、构造方法、静态变量、静态方法、静态初始化块)、封装(定义包、系统包、访问修饰符、this关键字、内部类)、继承(方法的重写、final关键字、super关键字、object类)、多态(引用类型转换、抽象类、接口)等。
类和对象
定义类
public class 类名{
属性 类型(成员变量);
方法;
}
创建对象 类名 对象名 = new 类名(); (实例化)
使用对象 对象名.属性; 对象名.方法();
属性 又称为 实例变量
变量
成员变量 类中定义 ,用来描述对象将要有什么;(具有初始值)
局部变量 方法内部定义;
构造方法(系统可自动生成)
1. new+构造方法 创建一个新对象
2. 用于初始化对象
3. 其方法名与类名相同,且没有返回值
4. 带参构造方法的使用 类名 对象名 = new 类名(参数);
静态变量
static修饰 被类的所有对象所共享 可用类名访问 或对象名访问。
静态方法
1.静态方法中不能直接调用非静态变量,需要创建对象访问;
2.普通成员方法中可以直接访问同类的非静态变量和静态变量;
3.静态方法不能直接调用非静态方法,需要创建对象访问;
静态初始化块
静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量
。
静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法
封装
隐藏属性 通过方法来访问属性
实现步骤:
1.修改属性可见性 改为private
2.(惯例)创建getter(无参有返回值)/setter(有参无返回值)方法
3.在方法中加入属性控制语句
管理Java
文件 解决同名文件冲突
定义包
(全小写字母)
package 包名//第一行
包之间用”.“隔开
java.(功能).(类)
java.lang.() 包含java语言基础的类
java.util.() 包含java工具类
java.io.() 包含输入、输出类
使用包
import 包名.类;
访问修饰符
修饰属性和方法的访问范围
this关键字
代表当前对象 this.属性 this.方法
内部类
内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。
1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
静态内部类
方法内部类
匿名内部类
成员内部类(普通)
1.外部类是不能直接使用内部类的成员和方法
2. 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字。
静态内部类
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();
该内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。
继承
单继承 一个类只有一个父类
子类拥有父类的所有属性和方法(除private),实现代码复用
class 子类 extends 父类
初始化顺序
1.先初始化父类 再初始化子类
2.先执行初始化对象属性,再执行构造方法初始化
方法的重写
子类对父类方法可以重写,优先调用子类方法
返回值类型 方法名 参数类型及个数都与父类继承方法相同
可以修饰
类 (不许被继承)、方法(不能被重写)、 属性(无法隐式初始化)、 变量(常量)
代表父类对象
1.访问父类属性 super.属性
2.访问父类方法 super.方法();
默认所有类的父类,方法适用所有子类
1. toString()方法
返回对象哈希码(可重写)地址
2. equals()方法
比较对象的引用是否指向同一块内存地址
getClass() 类对象 代码信息
类的对象 数据信息
多态
1.引用多态
父类的引用可以指向(本类/子类)的对象
2.方法多态
创建本类对象时,调用本类方法
创建子类对象时,调用子类重写或继承的方法
1.向上类型转换(隐式/自动类型转换) 小类型->大类型 无风险
2.向下类型转换(强制类型转换) 大类型->小类型 有风险 (溢出)
3.instanceof运算符 避免安全性问题
抽象类
使用abstract关键字修饰
作用:
约束子类必须有哪些方法,不关注如何实现
使用规则:
1. abstract定义
2. abstract定义抽象方法,只有声明,不需要实现
3.包含抽象方法的类是抽象类
4.可以包含普通方法,也可以没有抽象方法
5.不能直接创建,可以定义引用变量
接口
定义一批类需要遵守的规范,不关心类的内部数据和方法实现细节
定义
不使用class,使用interface关键字
属性默认 public static final
方法默认 public abstract
与匿名内部类配合使用
练习:
本季练习题为建立一个租车系统,需要完成的功能有:
下一篇将给出我的练习解答