面向对象
封装
继承
多态
- A:我们学习编程是为了什么
- 为了把我们日常生活中实物用学习语言描述出来
- B:我们如何描述现实世界事物
- 属性 就是该事物的描述信息(事物身上的名词)
- 行为 就是该事物能够做什么(事物身上的动词)
- C:Java中最基本的单位是类,Java中用class描述事物也是如此
- 成员变量 就是事物的属性
- 成员方法 就是事物的行为
- D:定义类其实就是定义类的成员(成员变量和成员方法)
- a:成员变量 和以前定义变量是一样的,只不过位置发生了改变。在类中,方法外。
- b:成员方法 和以前定义方法是一样的,只不过把static去掉,后面在详细讲解static的作用。
E:类和对象的概念
- a:类:是一组相关的属性和行为的集合
- b:对象:是该类事物的具体体现
- c:举例:
- 类 学生
- 对象 具体的某个学生就是一个对象
成员变量和局部变量的区别
1.在类中的位置不同
成员方法在方法外
局部变量在方法内
2.在内存中的位置不同
成员变量在堆内存
局部变量在栈内存
3.生命周期不同
成员变量随着对象的创建而存在,对象的消失而消失
局部变量随着方法被调用而存在,方便调用完之后就消失
4、初始值不同
成员变量有初始值
局部变量没有初始值,必须声明、赋值再使用
匿名对象,匿名内部类
匿名就是没有名字
例:
new Student(){ };
new 类名(){ };
封装
封装是指隐藏对象的属性和实现的具体过程,只对外提供公共访问的权限
提高了代码的复用性,提高了安全性。
- 封装和private的应用:
- A:把成员变量用private修饰
- B:提供对应的getXxx()和setXxx()方法
- private仅仅是封装的一种体现形式,不能说封装就是私有
**
this关键字
this代表当前对象的引用
构造方法
给对象的数据(属性)进行初始化
构造方法格式特点
- a:方法名与类名相同(大小也要与类名一致)
- b:没有返回值类型,连void都没有
- c:没有具体的返回值return;
创建一个对象的步骤
- Student s = new Student();
- 1,Student.class加载进内存
- 2,声明一个Student类型引用s
- 3,在堆内存创建对象,
- 4,给对象中属性默认初始化值
- 5,属性进行显示初始化
- 6,构造方法进栈,对对象中的属性赋值,构造方法弹栈
- 7,将对象的地址值赋值给s
static关键字
static随着类的加载而存在
优先于对象存在
被类的所有对象共享
静态只能由静态调用
main方法的格式详解
- public 被jvm调用,访问权限足够大。
- static 被jvm调用,不用创建对象,直接类名访问
- void被jvm调用,不需要给jvm返回值
- main 一个通用的名称,虽然不是关键字,但是被jvm识别
- String[] args 以前用于接收键盘录入的
继承
让类与类之间产生关系,子父类关系
好处:
提高了代码的复用性
提高了代码的维护性
让类与类之间产生了关系,这是多态的前提
弊端:
类的耦合性增强了
开发原则:高内聚,低耦合
继承只能单继承
子类不能继承父类的构造方法,但是可以通过super调用
final关键字
被final修饰的类不能被继承
修饰变量就只能赋值一次,变量就变成了常量
修饰的方法不能被重写
代码块的执行顺序
父类的静态代码块
子类的静态代码块
父类的无参构造器
子类的无参构造器
多态
事物存在的多种状态
多态的前提:要有继承关系,要有方法重写,要有父类引用指向子类对象
成员变量:编译运行都看左边
成员方法:编译看左边,运行看右边
静态方法:
- 编译看左边(父类),运行看左边(父类)。
- (静态和类相关,算不上重写,所以,访问还是左边的)
- 只有非静态的成员方法,编译看左边,运行看右边
抽象类
抽象就是看不懂的意思
抽象类的方法和抽象类
abstract class 类名{}
public abstract void 方法名(){ };
抽象类不一定有抽象方法,但有抽象方法的类一定是抽象类
抽象类不能被实例化
抽象类有构造方法
接口
接口用关键字interface表示、
interface 接口名 {}
类实现接口用implements表示
class 类名 implements 接口名 {}
接口不能被实例化
接口的子类要实现接口中的所有方法
接口没有构造方法
类与类,类与接口,接口与接口的关系
类与类:单继承
类与接口:多实现
接口与接口:都继承
.抽象类和接口的区别
抽象类:
1.有构造方法
2.成员方法可以是抽象方法,也可以不是
接口:
1.没有构造方法
2.只能是抽象方法
设计理念区别
- 抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。
- 接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。