面相对象编程"/>
Java面相对象编程
-
面相对象与面相过程的区别
面相对象:侧重的是对象,他会去创建一个对象,然后告诉这个对象要去干什么,对象自己去实现。
优点:扩展性强,维护成本低。
缺点:新手上手难
面相过程:侧重于过程,告诉你第一步干嘛,第二部干嘛。
优点:简单
缺点:维护性差 -
类和对象
类:是一类共同事务的统称,类的属性是事物的共同特征,类的行为是事务的共同动作
对象:是类的一个具体化的东西。 -
this关键字
this表示当前类的对象。
this可以在方法内部获取对象的属性
this可以区分成员变量和局部变量。 -
构造方法
在创建对象(new 类 ())的时候自动调用的方法,此方法没有返回值。
java会自动赠送类一个无参的构造方法。
public 类 (){
}
如果自己定义了构造方法,java就不会再送了。
作用:在创建对象时可以设置对象的属性信息。 -
构造方法的重载
构造方法也是方法,也可以进行重载。
作用:可以有更多的方式创建对象。
使用this()可以访问其他的构造方法。 -
static
被static修饰的属性是共享的,它是属于类的并不与属于对象, 优先于对象产生。
通用构造器和静态构造器
创建对象的过程(简单):
1.静态构造器
2.通用构造器
3.构造方法->创建对象
加载类之后会先执行静态的内容然后再创建对象,由于静态内容是在创建对象之前加载完成的,所以静态方法和静态块里面不能使用this。静态的内容也可以使用类名去访问。 -
访问权限
public 公共的,所有人都可访问。
default 默认 包访问权限,在自己包内的可以随意访问。
private 私有,别人不能访问
protected 受保护的 只有继承类可以访问它 -
getter和setter
setter主要是给成员变量赋值,做一定的保护。
getter从成员变量中获取数据。 -
继承
子类可以拥有父类中除了私有内容外的其它所有内容。
子类是对父类的扩展。 -
super关键字
表示父类里面的内容
可以用super来区分父类和子类重名的内容
子类创建对象时程序会自动执行子类的构造方法,但由于子类的构造方法默认第一行有一个super();所以程序会先执行父类的无参构造,如果父类的构造方法有参,则子类的构造方法第一行要写一个带参的super(); -
方法的重写
表示子类对父类的一些东西进行重新定义,子类和父类的方法声明完全一致,重写又称为方法的覆盖。 -
重载
重载发生在本类,方法名相同,参数列表不同,与返回值无关,只和方法名,参数列表,参数的类型有关.
重载(Overload):首先是位于一个类之中或者其子类中,具有相同的方法名,但是方法的参数不同,返回值类型可以相同也可以不同。
(1):方法名必须相同
(2):方法的参数列表一定不一样。
(3):访问修饰符和返回值类型可以相同也可以不同。
其实简单而言:重载就是对于不同的情况写不同的方法。 比如,同一个类中,写不同的构造函数用于初始化不同的参数。 -
多态
同一个对象拥有多种形态。
作用:把不同的数据类型进行统一,让程序具有强扩展性。
子类的对象赋值给父类的变量 -> 向上转型
缺点:屏蔽掉子类中的特有的方法。
把父类的变量转化回子类的变量 ->向下转型,有风险java要求必须要写强制类型转换。 -
final
被final修饰的变量不能被改变。
被final修饰的方法不能被重写。
被final修饰的类不能被继承。 -
抽象
只声明不实现,抽象方法使用abstract修饰,不可有方法体,直接用分号结束即可。
特点:
抽象类不可用创建对象,且抽象类的子类必须重写父类的抽象方法,否则子类必须是抽象类。
抽象类可以强制要求子类必须要有哪些方法,起到规范性的作用。 -
接口
接口是一种特殊的抽象类,接口的所有方法都是抽象方法,接口使用interface来声明。
接口中的所有内容都是公共的,能继承接口的只能是接口,接口和类只能是实现关系,类只能单继承,接口支持多实现,接口同样具有多态性。
接口中所有的变量全是全局静态常量。 -
成员变量的初始值
java中的成员变量在创建对象时都会赋初始值
byte=0
short=0
int=0
long=0
float=0.0
double=0.0
boolean=false
char=[] -
object
所有的东西都是对象,所有的类都要继承object -
equals和==
==判断两个变量或实例是不是指向同一个内存空间
equals判断两个变量或实例所指向的内存空间的值是不是相同
字符串的判断要用equals -
tostring方法
直接打印对象会默认执行对象的tostring方法 -
instanceof
判断某个对象是某个类型的。 -
参数传递的问题
java使用的是值传递 -
异常处理
编译时异常和运行时异常
抛异常
捕获异常,默认是jvm来捕获异常,程序会中断 -
异常的分类
运行时异常:一般不手动处理,出了问题再处理
其他异常:必须经过手动处理。
error:一般指的是系统级的错误,比如内存溢出。 -
try…catch
try{
尝试执行的代码
}catch(Exception e){
处理异常的代码
}finally{
最终的
} -
异常处理throws和throw
throws表示准备扔出一个异常。
throw表示向外抛出异常。 -
自定义异常
直接继承exception或者runtimeexception来实现异常。
更多推荐
Java面相对象编程
发布评论