day05 面向对象 如若有错还望指教

来源:互联网 发布:生物信息学数据分析 编辑:程序博客网 时间:2024/06/05 20:07

1.面向对象设计思想:


1.面向对象的思想:从现有的客观存在的事物出发来构造软件系统,在此过程里尽可能的使用人类的自然思维方式,强调以问题域(现实世界)中的事物为中心来思考、认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌
2.面向对象的方法是面向对象的世界观在开发方法中的直接运用
3.面向对象特征继承、封装、多态   抽象

补:万事万物都是对象 (对象=属性(attribute) + 行为(method)

2.类(class) 和   对象(Object)

a.类是对现实生活中一类具有共同特征的事物的抽象。(类构成由属性和方法[class中有什么(属性和方法)]

   类的实质是一种数据类型,因为它的本质是类型,而不是数据,所以不存在于内存中,不能被直接操作,只有被实    例化为对象时,才会变得可操作。

 补:类是用来描述同一类型对象的一个抽象概念,类中的对象具有相同的属性和行为

类是同一类型对象的模板;对象是类的一个具体实例

一个class类可以实例化多个Object对象实例


怎么创建一个对象 

  例子: Girl girl=new Girl();

b.怎么定义类?

修饰词]class 类名 [extends 父类名][implements 接口名1,接口名2…]{

  //部分1:类的成员变量(即属性)

  //部分2:类的构造方法

  //部分3:类的方法(即行为)

  //…

}


3.方法

a.什么是方法?

软件编程语言中,如果将函数定义为类定义的一部分,或者将它与某个对象绑定,则该函数称为方法。

b.方法的意义?
1.对一组操作/算法的封装
2.减少代码的耦合度
3.提高代码的复用度

c.语法:

<访问控制符><返回类型><方法名>([<参数列表>])[throws <异常…>]{

  <代码块>

}

返回类型被定义为void该方法体可以没有return语句;

如果返回值类型不是void,则必须有return语句


d.构造方法:

构造方法就是类构造对象时调用的方法,主要用来实例化对象,就像一个对象加工厂

1构造方法的名字必须与定义他的类名完全相同
2构造方法的调用是在创建一个对象时使用new操作执行,不能显示调用
3类中必定有构造方法,若不写,系统自动添加无参构造方法
4不能被static、final、synchronized、abstract修饰

补:如果类中没有任何构造方法,此时,系统默认一个无参构造方法
如果类中定义了构造方法,系统就不会默认的无参构造方法了 ,如果要使用无参构造方法,需要亲自定义一个无参构造方法

4.成员变量 和 局部变量区别

成员变量:

          1、成员变量定义在类中,在整个类中都可以被访问。

          2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

          3、成员变量有默认初始化值。

      局部变量:

          1、局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。

          2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。

          3、局部变量没有默认初始化值 

     在使用变量时需要遵循的原则为:就近原则

     首先在局部范围找,有就使用;接着在成员位置找


5.引用类型:

由类型的实际值引用(类似于指针)表示的数据类型

Date  d ;//定义一个Date类型的引用变量

d = new Date(); //使用new创建一个时间对象

占用两个内存块




6.方法重载:

指:在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
规则:
一.方法名一定要相同。
二.方法的参数表必须不同,包括参数的类型或个数,以此区分不同的方法体。
1.如果参数个数不同,就不管它的参数类型了!
2.如果参数个数相同,那么参数的类型必须不同。
三.方法的返回类型、修饰符可以相同,也可不同。
例子:

public Person(String name) {

  this.name= name;

}

public Person(String name, int age){

this.name = name;

this.age = age;}



7.JVM的内存分配

堆:存储的全部是对象,每个对象都包含一个与之对应的class信息,.jvm只有一个堆区(heap)被所有线程共享中不存放基本类型和对象引用,只存放对象本身

栈:每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问,栈区的空间是自动连续分配

方法区:又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的classstatic变量,方法区中包含的是在整个程序中永远唯一的元素,如class,static变量。


上图的代码 


package com.obj;
import java.util.Date;
public class Student {
String stuNo;
String name;
String sex ;
int age;
int weight;
int height;
Date birthday;

public static void main(String[] args) {
Student stu1 = new Student();//创建了一个学生对象
//int num = 10;
//String s = "abc";
stu1.stuNo = "1707001";
stu1.name = "jim";
stu1.sex = "男";
stu1.age = 23;
stu1.weight = 70;
stu1.height = 178;
stu1.birthday = new Date();
System.out.println(stu1);
//Student stu = stu1;
stu1 = null;

stu1.study(stu1.name);

Student stu2 = new Student();//创建了一个学生
stu2.stuNo = "1707002";
stu2.name = "Lucy";
stu2.sex = "女";
stu2.age = 21;
stu2.weight = 52;
stu2.height = 167;
stu2.birthday = new Date();

stu2.study(stu2.name);
}
public void study(String name){

System.out.println(name + "非常爱学习!!!");
}

public void eat(){


}

}



原创粉丝点击