面向对象总结
版本:V1.0 时间:2021年5月1日
1、类与对象的概念
类: 是面向对象程序设计(OOP)实现信息封装的基础。类是用户定义的一种数据类型,也称类类型。每个类包含对象的特征(变量)和行为(方法)。
对象:万物皆对象。是靠类实例化出来的。 是一个存储器地址,其中拥有值
2、数据类型的数组
8种基本类型都有数组,则新建的数据类型也是有数组的。定义的方式同基本数据类型的定义。例如 :新建了Student的类(如下代码)
package ceshi;
class Student{
private int id;
private String name;
private String address;
public void sayhi(){
system.out.print("大家好,我的名字是:"+name+",家庭住址为:"+address);
}
}
该类可实例一个学生对象或一类学生对象。若实例一个对象,则String zs = new Student();若为一类对象,则需要使用数组:Student[] stus = new Student[n]; n代表数量。
3、重写与重载
1)重写:修饰词、返回值类型、方法名、参数列表相同也可以不同,方法体不同;重载,方法名相同即可
2)重写发生在运行期绑定,看的是实例化对象;重载发生在编译期,看的是数据类型
3)重写用的比较多,多发生在继承、抽象类、接口等,在继承中,若觉得超类的方法不是很好,则可以进行重写;若调用抽象类或接口中,则里面的方法必须进行重写
4)重载多发生在一个方法可以传不同的参数,实现不同的方法
4、构造函数
构造函数的命名规则很简单,就是类的名称构成的方法,也就是实例化对象时后面的括号是否传递参数;一个类中默认有一个构造方法
构建构造函数,以上述2中的Student代码,其中加一个构造函数:
class Student{
Student(参数){
//方法体
}
}
5、一个类的介绍
一个类中主要包括:packer(当前包名称)、import(若需导包,则使用)、控制修饰词(public、protected、默认、private)、static(静态)、final(最终的、不可变的)
1)控制修饰词:在java中,修饰词共计有4中:public(公开的)、protected(受保护的)、默认(变量或方法前没修饰词)、private(私有的);变量或方法加上上述的4种修饰词后所涉及的范围,参见下表:
本类 | 同包类 | 子类 | 其他类 | |
---|---|---|---|---|
public | 可以 | 可以 | 可以 | 可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
默认 | 可以 | 可以 | 不可以 | 不可以 |
private | 可以 | 不可以 | 不可以 | 不可以 |
编程时需注意的是:数据私有化,行为公开化;若在继承过程中,超类中的变量建议为protected,子类的变量建议为private进行修饰;若发生在普通类中,则变量建议为private,方法则使用public修饰即可
2)final:最终的,不可变的;若使用final修饰变量或方法时,不能进行改变
final int a = 5;
int b = 6;
a=b;
上述代码报错,报错内容:The final local variable a cannot be assigned. It must be blank and not using a compound assignment;不能进行被改变
3)static:静态的;若为static进行修饰时,该变量或方法存储的位置为方法区中,程序仅加载一次,则若为static修饰的变量存储的大部分是视频、图片、标题等;
4)static final:常量;定义一个常量使用,若定义状态时使用等
6、继承
1)在一个项目中,有大量的类,若多个类中有相同的变量和方法时,则可将其抽取到一个类中,其他类进行继承该类即可;
2)类与类可发生继承,接口与接口可发生继承,一个类有且仅可继承一个类
3)修饰词为:extends,派生类若继承超类,若超类中有构造方法需传参时,则使用super()方法传参即可,super是默认的
7、抽象类
1)多个类发生继承时,若每个派生类调用该类中的方法都需进行重写,则可在超类中定义该方法为派生方法。若超类中有派生方法,则该类必须定义为抽象类
2)抽象类又名不完整类
3)修饰词:abstract;不需要方法体
public abstract class abstractDemo{
public abstract void step();
}
8、匿名内部类
1)匿名内部类多发生在该类只被调用一次(定时器)
public class nimingDemo{
Aoo o = new Aoo(){
//重写即可
};
}
class Aoo{
}
2)定时器的设置
import java.util.Timer;
import java.util.TimerTask;
class dingsq{
public static void main(){
Timer timer = new Timer();
timer.schedule(new TimerTask(){
system.out.print(111);
},10,1000);//第一个参数说方法体,第二个参数是第一次开始执行方法体的时间,第三个参数是每两次执行程序中间的时间
}
}
9、接口
1)定义一个类的修饰词为class,若定义一个接口则使用的修饰词为interface,若一个类实现该接口,则使用的关键字为implements;
2)接口中只能写常量和抽象方法;若不写static final或abstract修饰词时,系统自带存在
3)接口与接口之间可以进行继承;一个类可以实现多个接口,每个接口之间使用逗号隔开。
interface Aoo{
private static final int INFO = 6;
public abstract void step();
}
10、多态
1)多态,就是多种状态;符合既是。。。。也是。。。。的关系。例:小明既是学生,又是儿子。
2)多态中常见的方法是向上造型,向上造型时引用的数据类型是超类的,实例化的对象为派生类;向上造型后能点出来的东西就少了,只能点出来超类中的方法,若要点出来派生类中的方法,则需进行数据类型转换,即大类型强转为小类型,须在该实例对象前加括号,括号内容为小类型的数据类型
3)多态中常用的是类与类的继承,类与多种接口的实现。
(望各位业内人士提出宝贵意见)