目录
一、类与对象
二、面向对象特征
三、方法重载和重写
一、类与对象:
1、类:抽象笼统的概念,抽象出一类事物共有的属性和行为,类是用来创建具体实例(对象)的,使用类体(即类声明之后的一对大括号{}以及它们之间的内容成为类体)来描述所抽象出的属性和行为;
类体:类声明之后的一对大括号{}以及它们之间的内容成为类体,类体的内容包括两部分:
1)变量的声明;2)方法的定义;
属性 ( []中的可以省略)
权限修饰符 [特征修饰符] 属性类型 属性名字 [= 值]; (如果不写是有默认值)
方法
权限修饰符 [特征修饰符] 返回值类型 方法名字 ([参数列表]) [抛出异常] [{方法体}]
构造方法
权限修饰符 与类名一致的方法名 ([参数列表]) [抛出异常] {方法体}
1.作用 : 用来创建当前类的对象,进行初始化
2.写法: 权限修饰符 与类名一致的方法名 (参数列表) [抛出异常]{
3.调用 : 通过new关键字;
4.特点 : 每一个类都有默认的无参数的构造方法,如果我们定义了新的,默认的无参数的构造方法就会覆盖;构造方法存在方法重载;构造方法不能被继承。
程序块(代码块)
可以理解为是一个非常特殊的方法
没有修饰符 没有返回类型 没有名字 没有参数
只有一个方法的执行体{}
程序块是在每一次调用构造方法之前都会默认自动执行
程序块没有重载 却可以存在多个 按照创建的顺序逐一执行
2、类和类之间的关系
A is-a B 泛化(继承 实现)
A has-a B 包含(组合 聚合 关联)
A use-a B 依赖(依赖) (need-a)
二、面向对象特征:封装、继承、多态
1、封装: 将一些数据或执行过程进行一个包装,对数据的访问只能通过已定义的接口,就是将属性私有化,提供共有的方法访问私有属性。
目的 : 保护数据或执行过程的安全
方法本身就算是封装 封装了执行的过程 保护过程的安全 隐藏了执行细节 增强复用性。
2、继承:
1.子类继承父类,通过一个关键字extends;
2.子类的对象可以调用父类中的属性和方法 ,当做自己的来使用;
3.子类可以添加自己独有的属性和方法的;
4.子类从父类中继承过来的方法不能满足子类需要,可以在子类中重写父类的方法;
5.每一个类都有继承类,如果不写extends关键字,默认继承Object,如果写了extends则继承后面那个父类
6.Java中继承是单继承,每一个类只能有一个继承类 (在extends关键字后面只能写一个类)
可以通过传递的方式实现多继承的效果
7.继承在内存中的存储形式
三、多态: 将一种行为表现出不同的效果
要想实现多态的效果需要有继承关系, 方法重载和重写都是实现多态的方式;
父类的引用指向子类的对象, Animal A = new Pig();
注意:1.该引用只能调用父类中定义的属性或方法
2.如果子类中将父类的方法重写,那么调取方法后执行的结果是子类重写之后的那个结果
如果父类与子类有同名的属性,执行父类的属性
如果父类与子类有同名的方法(重载) ,执行子类重写之后的方法
4.若想要调用子类中独有的成员,需要进行类型转换(造型)
例: Object o = new Student(); // (向上转型)
Animal a = (Animal)o; // (强制向下转型)
5.造型时(强制向下转型时) 可能会出现一个运行时异常ClassCastException
避免造型的异常:用instanceof关键字来进行判断
三、方法重载和重写:
方法重载:一个类中的一组方法,具有相同的方法名字但参数列表不同,这样的一组方法构成了方法重载;参数列表不同指:参数的个数,参数的类型,参数的顺序不同;
方法重写:发生在父子类中,当父类的方法无法满足子类需要时,子类可以重写父类的方法;方法名、参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类;如果父类方法访问修饰符为private则子类中就不能重写。
区别: