1、对面向对象的理解:
所有的东西都可以理解为一个具体的对象(世间万物皆对象),某一类具体的东西又可以抽象化,提取共同特征,共同行为,对特征和行为提供了封装特性,同时行为提供了对象之间的通信形式。
2、面向对象的特点:继承,封装,多态
(1)继承:
1.提高了代码的复用性
2.让类与类之间产生了关系,有了这个关系,才有了多态的特性
(2)封装:
1.定义: 隐藏对象的属性和实现细节,进对外提供公共访问方式
2. 好处:将变化隔离、便于使用、提高重用性、提高安全性
3. 封装的原则:将不需要对外提供的内容都隐藏起来,把属性都
隐藏,提供公共方法对其访问
(3)多态:
定义:对象的多态性是指在一般类中定义的属性或方法被特殊类
继承之后,可以具有不同的数据类型或表现出不同的行
为。
3、成员变量和局部变量的区别:
作用范围:成员变量作用于整个类中,局部变量作用于函数中或时语句中
在内存中的位置:成员变量存在于堆内存中,因为对象的存在,才在内存中存在局部变量存在于栈内存中
4、匿名变量:
(1)对对象的方法只调用一次时,可以使用匿名对象来完成,这样比较简化,
(2)如果对一个对象进行多个成员调用,必须给这个对象起个名字。
(3)可以将匿名对象作为实际参数进行传递
5、构造函数:
特点:函数名和类名相同、不定义返回值类型、不需要return语句
对象一建立就会调用与之相对应的构造函数
作用:用于给对象进行初始化
当一个类没有定义构造函数时,系统会默认给该类加入一个空参数构造函数
6、构造函数和一般方法的区别:
构造函数和一般函数在写法上不同
在运行上也不同:构造函数是在对象一建立就运行,给对象初始化
而一般函数是对象调用才执行,给对象添加对象具备的功能
7、一个对象建立,构造函数只运行一次
而一般函数可被对象调用多次
8、什么时候定义构造函数?
当分析事物时,该事物存在具备一些特性或者行为,那么将这些内容定义在构造函数
中
9、构造代码块:
作用:给对象进行初始化,对象一建立就运行,而且优于构造函数执行
和构造函数的区别:
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化
构造代码块中定义的是不同对象共性的初始化内容
10、如何理解this?
this代表它所在函数所属对象的引用
简单说:哪个对象在调用this所在的函数,this就代表哪个对象
this的应用:当定义类中的函数时,该函数内部要用到调用该函数的对象时,这时用
this来表示这个对象
this语句用于构造函数间的调用
this语句只能定义在构造函数的第一行,因为初始化要先执行
11、static特点:
(1).随着类的加载而加载
(2).优先于对象存在
(3).被所有对象所共享
(4).可以直接被类名所调用
12、实例变量和类变量的区别:
1.存在位置
类变量随着类的加载而存在于方法区中
实例变量随着对象的建立而存在于堆内存中
2.生命周期
类变量随着类的消失而消失
实例变量随着对象的消失而消失
13、静态使用注意事项:
(1).静态方法只能访问静态成员变量,而非静态方法既可以访问静成员变量也可以访问
非静态成员变量
(2).静态方法中不可以定义this和super关键字(因为静态优先于对象存在,所以静态方
法中不可以出现this)
(3).主函数是静态的
14、什么时候定义静态变量(类变量)?
当对象中出现共享数据时,该数据被静态所修饰
对象中的特有数据要定义成非静态存在于堆内存中
15、什么时候定义静态函数?
当功能内部没有访问到非静态数据(对象的特有数据),那么该功能可以定义成静态的
16、静态代码块:
格式:
static
{
静态代码块中的执行语句
}
特点:随着类的加载而执行,只执行一次,并优于主函数。
用于给类进行初始化
17、想保证对象的唯一性:
(1).为了避免其他程序过多建立该类的对象,先禁止其他程序建立该类对象
(2).还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象
(3).为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式怎样用代码实现:
(1).将构造函数私有化
(2).在类中创建一个本类对象
(3).提供一个方法可以获取到该对象
class Single
{
private int age;
public void setAge(int age)
{
this.age=age;
}
public int getAge()
{
return age;
}
private Single(){}
private static Single s=new Single();
public static Single getInstance()
{
return s;
}
}
class SingleDemo
{
public static void main(String args[])
{
Single s1=Single.getInstance();
Single s2=Single.getInstance();
s1.setAge(20);
s2.getAge();//20
}
}
浙公网安备 33010602011771号