黑马程序员---java学习笔记之面向对象知识点

------- android培训java培训、期待与您交流! ----------

1、什么是面向对象?什么是面向对象的思想?

        1):面向对象是一种思维的方式;

        2):将问题简单化,以前可能要面对许多的功能,现在只需要去面对包含这诸多功能的对象,调用就可以啦;

        3):由执行者,转变成了指挥者

        面向对象基本思想是从现实世界中客观存在的事物(即对象)出发来构建软件系统,并在系统中尽可能的应用人类的自然思维方式,强调以事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把他们抽象的表示为系统中的类,作为系统中的基本构成单元,使客观世界的事物在计算机系统中保持相互关联本来面貌!

2、面向对象中类的概念是什么?对象的概念又是什么?

        类是对现实中一类事物的描述;

        对象是现实中的一个个具体的事物;

3、数据类型有基本数据类型和引用数据类型之分。

        基本数据类型有:boolean、byte、char、short、int、long、float、double等8种;

        引用数据类型有:数组、接口、类等3种引用数据类型。

4、匿名对象,就是没有名字的对象。匿名对象使用的两种方式:

        1、当对对象的方法只调用一次时,使用匿名对象,比较简化;

        2、可以将匿名对象当做实际参数传递给有需要的函数

5、强引用,弱引用,软引用,虚引用。

6、面向对象的特性之一:封装。

7、成员变量与局部变量的三点不同之处:

        1、作用范围:成员变量在函数之外,局部变量在函数之内;

        2、存储位置:成员变量存储在堆内存中,局部变量存储在栈内存中;

        3、初始状态:成员变量都有默认的初始值,而局部变量没有。

8、面向对象的三大特征:封装、继承、多态。

9、开发就是找对象使用,没有对象就建立对象然后使用它,另外就是还要维护对象之间的关系。

10、编程序的时候应该要成这样的习惯:你想要实现某个功能时,应该先去找相应的对象。

11、封装的好处,对于软件使用者来说,更简单更易于使用,因为使用者不用去理解封装后的内容,只需要简单调用就可以啦;对于开发者来说,封装后的内容使用者不能访问就避免了使用者破坏的可能性,另外,也更易于开发者维护,因为对象对外提供的访问方式是不变的,开发者改变其实现细节对外是不可见的,所以对使用者来说,使用不会受到任何影响。

12、构造函数:

       1):如果类中没有构造函数时,系统会默认地创建一个空参空函数体的构造函数,如果你自定义了构造函数,系统就不会再帮你创建啦;你可以这样理解:类中没有构造函数时,默认是有一个空参的;当类中定义了构造函数,那么就是说定义了几个构造函数就有几个构造函数。

        2):构造函数的作用就是默认初始化。

        3):构造函数和一般函数的区别:

                a):写法上不同,构造函数没有返回值类型这个选项,一般函数都返回值类型;

                b):运行时,一旦对象建立完成,构造函数就被自动调用执行,而一般函数(非静态)只有在对象调用时才会去执行;

                c):构造函数在对象建立后只能执行一次,而一般函数可以执行多次。

13、构造代码块:

        构造代码块和构造函数的功能都是给对象初始化,而且构造代码块先于构造函数执行,不同的是,构造函数只能够对传递相应参数的对象初始化,而构造代码块则不管你传递的参数如何,都是对对象进行初始化。举个例子:


package com.day02;

public class Person {

	/**
	 * @param args
	 */
	private int age;
	private String name;
	//构造代码块
	{
		System.out.println("构造代码块运行。。。。");
	}
	//不同类型的构造函数
	public Person(int age)
	{
		this.age = age;
		System.out.println("age = "+age);
	}
	public Person(int age,String name)
	{
		this.age = age;
		this.name = name;
		System.out.println("age = "+age+",name = "+name);
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Person p1 = new Person(16);
		
		Person p2 = new Person(16,"zhang");
	}

}

运行结果是:

由运算结果可知,无论是创建对象p1时,还是创建对象p2时,构造代码块都运行了,这说明构造代码块能够为所有创建的Person对象初始化;

创建对象p1的时候,只有第一个构造函数被调用执行,创建p2的时候,只有第二个构造函数被调用执行,这说明构造函数,只能为相应的对象进行初始化。


14、关键字this

        一个作用是区分成员变量与局部变量同名的情况;示例如下:

为什么this有这种作用呢?换个问法,this指代的是什么呢?

        我们知道,类中的内容是一类对象的描述,该类对象会在需要的时候调用类中的内容来操作执行。上述的两行代码,肯定是在类中的某个函数里,要执行这两行代码,对象需要调用这个函数,那么哪个对象在调用这个函数,这里的this指代的就是那个对象!

      另外,this很多情况下被省略,只有在必需的情况下才会表示出来。

       **** this关键字的应用:

                a):当函数内部需要用到调用该函数的对象时,该对象就用this表示;

                b):构造函数之间的调用,且构造函数内的this(arg)语句只能放在该构造函数的第一行。构造函数之间的互相调用要避免死循环,如下代码就是构造函数间死循环的示例;

public Person()
	{
		this("zhangsan");
	}
	public Person(String name)
	{
		this();
	}


15、静态使用注意事项

        1、静态方法只能访问静态的成员(非静态既可以访问静态成员也可以访问非静态成员);

        2、静态方法中不能定义this、super关键字

        3、主函数是静态的

16、static关键字是一个修饰符,用来修饰静态成员变量,而不能修饰局部变量;

        访问静态成员除了可以使用“对象 .静态成员”的形式,还可以使用“类名.静态成员”的形式;

****17、在网上看到一篇关于java运行过程的详解,特别地给力,贴上地址!里面内容,java程序在计算机上运行时的内存视角和运行视角!下面是地址,

http://www.360doc.com/content/11/0504/12/3903749_114271703.shtml

18、静态成员特点:

        1):随着类的加载而加载:类加载的时候,静态成员也被创建了;

        2):某类的静态成员优先于该类对象存在;

        3):静态成员被所有的对象所共享;

        4):静态成员多一种调用方式,可以直接被类名加成员名的形式调用

19、类变量与实例变量:

        1):存储位置不同,类变量随着类的加载而存储在方法区中,实例变量随着对象的建立而存储在堆中;

        2:):生命周期不同。类变量随着类的消失而消失,生命周期比较长,而实例变量随着对象的消失而消失,生命周期相对较短。

20、使用静态成员的优点是:对对象的共性内容进行单独地存储,节省内存空间;可以直接用类名加成员名的形式调用;

        缺点是:生命周期长;访问有局限性(静态方法只能访问静态的变量和方法)。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值