尚硅谷java学习笔记——3.面向对象编程

面向对象的三大特征:封装(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)来实现调用。

 

Java权限修饰符public、protected、private置于 类的成员定义前,用来限定对象对该类成员的访问权限。
修饰符
类内部
同一个包
子类
任何地方
private
Yes

 

 

 

(缺省)
Yes
Yes

 

 

protected
Yes
Yes
Yes

 

public
Yes
Yes
Yes
Yes

对于class的权限修饰只可以用public和default(缺省)。
Øpublic类可以在任意地方被访问。
Ødefault类只可以被同一个包内部的类访问。

类的成员之三:构造器(constructor 构造方法)

constructor:建造者

构造器的作用:1)创建对象   2)初始化对象的属性


1.设计类时,若不显式的声明类的构造器的话,程序会默认提供一个空参的构造器

2.一旦显式的定义类的构造器,那么不提供默认的构造器

3.如何声明类的构造器,格式:权限修饰符  构造器名(与类同名)(形参)

4.类的多个构造器之间构成重载


this关键字

Ø它在方法内部使用,即这个方法所属对象的引用;
Ø它在构造器内部使用,表示该构造器正在初始化的对象
this表示当前对象,可以调用类的属性、方法和构 造器
Ø当在方法内需要用到调用该方法的对象时,就用this。

在构造器中使用“this(形参列表)”显示的调用本类中重载的其他构造器

     》要求this(形参列表) 要声明在构造器的首行

     》类中若存在n个构造器,那么最多有n-1构造器中是使用了this.


JavaBean

JavaBean是一种Java语言写成的可重用组件。
所谓javaBean,是指符合如下标准的Java类: 
                Ø类是公共的
                Ø有一个无参的公共的构造器
                Ø有属性,且有对应的get、set方法
用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。


补充:UML类图
尚硅谷java学习笔记——3.面向对象编程_第1张图片



你可能感兴趣的:(java开发)