面向对象的三大特征:封装(Encapsulation),继承(Inheritance),多态(Polymorphism)
1.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
2.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
3. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
4.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
OOP:Object Oriented Programming
面向过程:procedure oriented programming
java代码世界是由类构成的
属性:对应类中的成员变量 Field=属性=成员变量
行为:对应类中的成员方法 Method=(成员)方法=函数
类的属性(成员变量)
成员变量VS局部变量
相同点:1、遵循变量声明的格式
2、都有作用域
不同点:1、声明的位置不同:成员变量:声明在类里,方法外
局部变量:声明在方法内,方法的形参部分,代码块内
2、成员变量的修饰符有四个:public private protected 缺省
局部变量没有修饰符,与所在方法的修饰符相同
3、初始化值:一定会有初始化值
成员变量:如果在声明时没有显式赋值,不同类型成员变量会有不同的默认值
byte short int long ==》0
float double ==>0.0
char ==>空格
boolean==>false
引用型变量==》null
局部变量:一定要显式的赋值(局部变量没有默认初始化值)
4、在内存中存放的位置不同:成员变量:堆中
成员变量:桟中
类的方法:提供某种功能的实现
格式:权限修饰符 返回值类型 方法名(形参)
构造器Constructor是否可被override
答:构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,
那么这里到底是值传递还是引用传递?
答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,
参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的
匿名类对象:创建的类的对象是匿名的。
1、当我们只需要一次调用类的对象时,我们就可以考虑使用匿名的方式创建类的对象。
2、特点:创建的匿名类的对象只能够调用一次。
可变个数的形参的方法。(5.0之后)
1、格式:对于方法的形参:数据类型...形参名
2、可变个数的形参的方法与同名的方法之间构成重载
3、可变个数的形参在调用时,个数从0开始到无穷多个都可以
4、使用可变多个形参的方法与 方法的形参使用数组 是一致的
5、若方法中存在可变个数的形参,那么一定要声明在方法形参列表的最后
6、在一个方法中,最多只有一个可变个数的形参
如:下列两种写法等价,系统会认为他俩相同
public void sayHello(String ... args){
for(int i = 0;i < args.length;i++){
System.out.println(args[i]);
}
//System.out.println("=====");
}
public void sayHello(String[] args){
for(int i = 0;i < args.length;i++){
System.out.println(args[i]);
}
}
面向对象特征一:封装与隐藏
问题:当创建了类的对象以后,如果直接通过"对象.属性"的方式对相应的对象属性赋值的话,可能会出现不满足实际情况的意外,我们考虑不让对象来直接作用属性,而是通过"对象.方法"的形式,来控制对象对属性的访问。实际情况中,对属性的要求就可以通过方法来体现。
解决的方法:(封装性的思想)①将类的属性私有化,②提供公共的方法(setter & getter)来实现调用。
修饰符
|
类内部
|
同一个包
|
子类
|
任何地方
|
private
|
Yes
|
|
|
|
(缺省)
|
Yes
|
Yes
|
|
|
protected
|
Yes
|
Yes
|
Yes
|
|
public
|
Yes
|
Yes
|
Yes
|
Yes
|
类的成员之三:构造器(constructor 构造方法)
constructor:建造者
构造器的作用:1)创建对象 2)初始化对象的属性
1.设计类时,若不显式的声明类的构造器的话,程序会默认提供一个空参的构造器
2.一旦显式的定义类的构造器,那么不提供默认的构造器
3.如何声明类的构造器,格式:权限修饰符 构造器名(与类同名)(形参)
4.类的多个构造器之间构成重载
this关键字
在构造器中使用“this(形参列表)”显示的调用本类中重载的其他构造器
》要求this(形参列表) 要声明在构造器的首行
》类中若存在n个构造器,那么最多有n-1构造器中是使用了this.
JavaBean