您的位置:首页 > 职场人生

黑马程序员-------面向对象-------

2014-01-11 22:41 267 查看
------- android培训java培训、期待与您交流!
----------

面向对象:
面向对象是相对面向过程而言
面向对象和面向过程都是一种思想
面向过程
强调的是功能行为
面向对象
将功能封装进对象,强调具备了功能的对象。
面向对象是基于面向过程的。

面向对象的特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)

成员变量和局部变量的区别?

1,作用范围。
成员变量:定义在类中,可以被类中的任意方法访问。
局部变量:只在它所属的局部大括号中有效。
2,存储情况。
成员变量(非静态):存储在堆内存中,随着对象的存在而存在。当对象变成垃圾被回收时,该该对象中的成员变量会消失。
      成员变量(静态):存储在方法区中,随着类的加载而加载,随着类的消失而消失
局部变量:存储在栈内存中,当方法被调用,或者语句被执行的时候,才存在。
当方法运行完毕,或者语句运行完毕时,局部会被自动释放。所以成员变量也称之为实例(对象)变量.
3,初始化情况。
成员变量:在堆内存中有默认初始化值。
局部变量:必须手动初始化后,才可以被使用。

class Demo{
int num = 4;
public void show(){
num= 5;
for(int y=0; y<3; y++){
System.out.println(y);
}
}
public static void main(String[] args){
//Demo d = new Demo();
//d.show();

}
}

对象的创建和使用

class Car {//对Car这类事物进行描述
String color = "red";
int num = 4;
void show(){
int num = 100;//我这里再定义一个num可不可以?
System.out.println("color="+color+"..num="+num);
}
}
class CarDemo {
public static void main(String[] args) {
Car c = new Car();//建立对象
c.color = "black";//对对象的属性进行修改
c.show();//使用对象的功能。
}
}

匿名对象

匿名对象是对象的简化形式,是没有名字的对象.(只要是简化形式就有一定局限性)
匿名对象使用时需要注意的两种情况
当对对象方法仅进行一次调用的时
匿名对象可以作为实际参数进行传递

public static void method(Car cc){
cc.num = 3;
cc.color = black;
cc.run();
}
pulic static void main(String[] args){
method(c);
method(c1);
method(c2);
method(new Car());
}

封装(Encapsulation)

封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
将变化隔离。
便于使用。
提高重用性。
提高安全性。
封装原则:
将不需要对外提供的内容都隐藏起来。
把属性都隐藏,提供公共方法对其访问。
联系的实例:

class PersonDemo {
 public static void main(String[] args) {
 Person p = new Person();
p.age = 20;
p.speak();
 }
}
class Person {
 int age;
 public void speak() {
System.out.println(age);
}
}

private关键字:
是一个权限修饰符。
用于修饰成员(成员变量和成员函数)
被私有化的成员只在本类中有效。
当成员私有后,提高了安全性。但是访问权限降低了。这时可以通过对外提供公有方法的形式对其进行访问。
好处是:可以在方法中对成员变量的访问进行控制。
注意:私有仅仅是封装的一种体现形式而已。
常用之一:
将成员变量私有化,对外提供对应的set ,get方法对其进行访问。提高对数据访问的安全性。
void setAge(int a){}int getAge()

构造函数特点:

1.构造方法的方法名必须与类名相同。
2.构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
3.构造方法不能由编程人员调用,而要系统调用。
4.一个类可以定义多个构造方法,也就是构造方法可以重载,以参数的个数,类型,或排列顺序区分。
5.构造函数细节:如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
6.作用:构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。

实例:

class Person {
 private String name = "haha";
private int age;

//构造函数。

 Person() {
 cry();
 }
 Person(String n) {
 name = n;
 cry();
}
 Person(String n,int a) {
 name = n;
age = a;
 cry();
 }

构造函数和一般函数的区别

1从功能上的区别:
构造函数是给对象初始化的
一般函数是因为对象需要满足某种功能定义的
2从执行上的区别
构造函数,是对象创建的时候被执行,不用调用。
一般函数是什么时候调用,就什么时候执行,不调用就永远不执行。

this关键字

哪个对象调用this所在的函数,this就代表哪个对象。

public boolean compare(Person pp) 
{if(this.age==pp.age)
return true;
return false;

static(静态)关键字

1,static关键字:
static  是一个修饰符,用于修饰成员(成员变量 、成员方法)
2,当成员被静态修饰后,就多了一种调用方式,除了可以被对象调用外,还可以直接被类名调用
   格式:类名.静态成员
3,static特
4000

随着类的加载而加载。  也就是说:静态会随着类的消失而消失,说明它生命周期最长。
优先于对象存在  。明确一点:静态先存在 对象后存在。
被所有对象共享 ,
可以被类名所调用

练习实例:

class Demo {
 int num1 = 3;
 static int num2;
 void show() {
System.out.println("num1="+this.num1);
System.out.println("num2="+Demo.num2);
 }
 static void method() {

System.out.println("num2="+Demo.num2);
 }
}

局部代码块、构造代码块、静态代码块

1,局部代码块:
作用:控制变量的生命周期;
在程序中,当我们已经使用完 x 后,并且在接下来的代码中,不会再用到x,那么就没必要让x 在内存中占用空间了,这用情况下,可以使用 局部代码块,将x及其所设计到的区域封装为局部代码块,他们在程序执行中顺序不变,只是在执行完成后消失。
2,构造代码块:
作用:它可以给所有对象进行初始化
存在于:类中。
当类中的构造方法以重载的形式存在时,并且有共同成员变量或共同的方法时,可以通过构造代码块对其进行初始化;这样可以减少代码的重复!
3,静态代码块:
作用:给类进行初始化。
当类中的方法都被静态了化,并且构造方法被private了,这时我们不能,在将这个类实例化,然而又想让类增加一些属性,就可以使用静态代码块
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: