1、类
(1)定义公式
访问修饰符 class 类名{
//属性(变量)
//方法
}
备注:1、访问修饰符:public 、default
2、类名 必须 与文件名相同
3、类名 命名规则:驼峰命名规则,所有单词首字母大写
2、对象的创建
(1)对象创建公式(对象的实例化):
类名 对象名 = new 类名(参数列表);
(2)对象的使用:属性的调用形式
①对象名.属性名 = xxx;
(3)对象的使用:方法的调用形式
①对象名.方法名(参数列表);
(4)思考:同一个类创建多个对象时,对象与对象之间的内容,是否会互相影响?
(5)图例:
(6)一对一关系:Student=》Card
①
3、构造方法:
(1)方法的分类:
①普通方法
访问修饰符 返回值类型 方法名(参数列表){}
②构造方法
1)定义公式:
访问修饰符 类名(参数列表){
//-方法体
}
备注:1、构造方法的方法名必须与类名相同
2、构造方法没有返回值类型
③系统给每个类提供一个默认的构造方法(无参无任何业务逻辑),如果我们自定义构造方法,则系统不会给我们提供默认构造方法
④构造方法可以重载
(2)构造方法的作用
①对象实例化
②对象参数的初始化
4、面向对象三大特性
封装、继承、多态
5、封装:
(1)什么叫封装?
(2)封装作用
①保护属性的内容
(3)封装的步骤
①所有属性私有化,使用private 关键字修饰,修饰的数据,只能在本类中,进行访问
②对外提供简单的操作入口(提供访问属性的公共方法)
1)对外提供两个公开的方法,分别是set方法和get方法
2)例如:age 属性
a.修改age属性:调用set方法,例如:setAge
b.读取age属性,调用get方法,例如:getAge
③Set方法的命名规范:例如 age
public void setAge(int a){
age = a;
}
④get方法的命名规范:例如 age
public int getAge(){
return age;
}
(4)案例:
6、this 关键字
(1)This是一个关键字,翻译:这个
(2)This是一个引用,this保存的是内存地址,this存储在JVM堆内存的java对象内部
(3)创建100个java对象,每个对象都有一个this,因此有100个this
(4)This可以出现在方法里,this指向当前正在执行这个动作的对象
(5)This关键字一般情况可以省略
(6)This不能出现在static修饰的方法中
(7)案例:
(8)this内存中存储形式
7、继承:
(1)什么是继承?
(2)继承作用
①基本作用:代码的重用,重要的作用:有了继承才有:多态机制与方法的重写
(3)继承关键字:
①extends
(4)继承语法结构:
访问修饰符 class 类名 extends 父类名{
//属性 + 方法
}
或者
Class A extends B{}
Class B extends C{}
(5)Java中继承是单继承(一个类只能有一个直接的父类,可以有多个间接的父类)
(6)继承中的术语
①例如:B类继承 A类
②A类称为:父类、基类、超类、superclass
③B类称为:子类、派生类、subclass
(7)子类可以继承父类哪些数据?
①父类中私有的信息,不支持继承
②父类中构造方法不支持继承
③其他数据都可以继承
(8)Object类是所有类的超类或根类
8、方法的重写(方法的覆盖):
(1)什么叫方法的重写:override
①前提必须存在继承关系,发生在两个类(父类与子类)之间,方法名相同,参数列表相同,返回值类型相同,访问修饰符的范围等于或大于父类中方法的访问修饰符,
(2)什么叫方法的重载:overload
①发生在同一个类中,方法名相同,参数列表不同,与返回值类型无关
(3)什么时候使用方法的重写?
①当父类中的方法,无法满足子类需求时,子类就应该重写父类相对应的方法
(4)注意:
①私有方法与构造方法不能继承,所以不能重写
②静态方法可以被重写吗?
1)不能被重写
③属性可以被重写吗?
1)重写只是针对于方法
9、super
(1)super/this 进行对比学习
(2)Super 父类对象的引用
(3)Super使用格式:
①super.
②super(参数列表)
(4)super():只能出现在子类的构造方法第一行,通过当前的构造方法去调用父类中的构造方法
(5)Super关键字不能在 static方法中使用
10、多态:
(1)什么叫多态?
①多种表示形态。
②在父类中的某个方法有多种表示形态=》多态
(2)多态的前提条件:继承
(3)多态中两个重要的行为:
①向上转型
1)子类 =》 父类
2)自动类型转换
②向下转型
1)父类 =》 子类
2)强制类型转换
(4)向上转型
(5)向下转型(有风险)
11、关键字:
(1)Package
(2)Import
12、抽象类
(1)抽象的关键字
①abstract
(2)抽象方法
①没有方法体的方法就是抽象方法
②抽象方法的定义公式:
访问修饰符 abstract 返回值类型 方法名();
(3)为什么要有抽象方法?
-----------
(4)抽象类
①有抽象方法的类就是抽象类
②抽象类定义公式
访问修饰符 abstract class 类名{}
(5)抽象类不能被实例化,如果想使用抽象类,必须使用抽象类的子类
(6)抽象类中可以有抽象方法,也可以有非抽象方法
(7)非抽象类中只能有非抽象方法
(8)抽象类的子类,必须重写抽象类中所有的抽象方法,非抽象方法可以选择性的重写
(9)抽象类可以继承抽象类
(10)案例: