黑马程序员—java技术blog—第一篇:面向对象

来源:互联网 发布:php获取数组长度 编辑:程序博客网 时间:2024/05/06 06:19

黑马程序员—java技术blog—第篇:面向对象

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

1:面向对象

(1)面向过程 强调过程,执行者

(2)面向对象 强调对象,指挥者

(3)面向对象思想的特点

A:它是一种更符合人们思考习惯的思想

B:它使复杂的内容简单化

C:它使我们从执行者变成了指挥者

请解释面向对象的思想?

定义:面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。 

面向对象方法的主要优点是:符合人们通常的思维方式;从分析到设计再到编码采用一致的模型表示具有高度连续性;

软件重用性好。

(4)面向对象的特点

A:封装

B:继承

C:多态

 

2:类和对象

(1)类 对现实世界中事物的描述(成员变量和方法)

(2)对象 现实世界中实际存在具体的个体

(3)对象的使用以及内存图 new


3:局部变量和成员变量

(1)作用范围 

局部变量:方法内public void method(String name) {}

成员变量:类中,对整个类有效{成员变量分为两种一种静态的,一种非静态的}

(2)存储空间

局部变量:栈内存

成员变量:堆内存{静态的成员变量在方法区,非静态的在对象中在堆内存中}

(3)初始化值

局部变量:在使用前必须手动给值

成员变量:jvm默认初始化值。

int 0  byte 0  short 0  long 0 double 0.0  boolean false char  '\u0000'

class Person {

int num = 10;

public void method(){

int num = 20 ;

System.out.println(num);

}

}

 

4:匿名对象的使用(了解)

(1)当对对象中的功能只执行一次的时候使用。否则,请你使用有名字的对象。

Person p = new Person();

p.show();

p.show();

//p.print();

new Person().show();

new Person().show();

//new Person().print();

method(new Person());

(2)用于作为实际参数进行传递。

Person p = new Person();

method(p);

method(new Person());

public static void method(Person p){}

(3)是否可以用匿名对象调用属性,是否有意义?

     可以,但是意义不大,没调用一次属性就都new一次,开辟堆空间,调用完属性后那段堆空间就成垃圾了。

 

4:封装

(1)封装的好处:便于重复使用,安全性高。

(2)private权限修饰符

class Demo{

private int age;//把属性私有对外提供公共的访问方法,可控性提高了

 

public void setAge(int age){//age = -20;

if(age>0 && age<=200){

this.age = age;

}

else {

System.out.println("请回火星");

}

}

 

public int getAge(){

return age;

}

/*

设置是setXxx要传参数

获取是getXxx要返回值类型,返回值类型和属性一致

*/

}

class DemoTest{

public static void main(String[] args) {

Demo d = new Demo();

d.setAge(-20);

System.out.println(d.getAge());

}

}

5:构造函数

class Person{

int age;

Person(int age){}

}

(1)用途:用于给对象中属性进行初始化。

A:格式类名(){code}Person(){}

BPerson(){}public Person(){}

(2)特点 你不定义空参数的构造函数,系统会自动给一个空参构造,你定义了构造函数无论是有参还空参的,

系统就不再给空参数的了。

(3)重载构造函数,是根据参数列表来区分是哪个构造函数

APerson(){}//Person p = new Person();

BPerson(int age,String name){}

CPerson(int age){}

DPerson(String name,int age){}

class Person{

int age;

String name;

Person(){}

Person(String name,int age) {

this.name = name;

this.age = age;

}

public void speak(){

System.out.println(age + "....." + name);

}

}

class Demo{

public static void main(String[] args) {

Person p1 = new Person("zhangsan",20);

Person p2 = new Person();

p1.speak();

}

}

6this关键字

(1)代表当前对象的引用。使用的时候,谁调用方法,this就代表谁。

(2)什么时候使用this呢?

A:当局部变量和成员变量重名的时候,可以用this进行区分。

Bthis调用成员方法

C:构造函数中使用this

this() 必须放在第一行。

----- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://edu.csdn.net/heima" target="blank">http://edu.csdn.net/heima</a>

0 0
原创粉丝点击