即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

java面向对象

编程语言 yangying496875002 29℃ 0评论
本文目录
[隐藏]

1. 1、面向对象

  一种基于面向过程的新的编程思想,顾名思义该思想是站在对象的角度思考问题,我们把多个功能合理的放到不同对象里,强调的是具备某些功能的对象具备某种功能的实体,称为对象.面向对象最小的程序单元是:.

  面向对象更加符合我们常规的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性

  在软件工程上,面向对象可以使工程更加模块化,实现更低的耦合和更高的内聚。

三大特征:

1:封装(Encapsulation);

2:继承(Inheritance);

3:多态(Polymorphism);

封装是指将对象的实现细节隐藏起来,然后通过公共的方法来向外暴露该对象的功能。

继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类是一种特殊的父类,能直接或间接获得父类里的成员。

多态是可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对象在运行时可能表现出不同的行为特征。

注意:千万不要误解为面向对象一定就优于面向过程的设计

2. 2、对象和类的关系

  你在街上看到一个美女,就可以把这个美女看成一个对象,那么该对象有两方面的定义状态和行为

美女有状态,如身高,年龄,皮肤颜色等;美女还有行为,如走路,说话,抛媚眼等。

不难发现,对象可以定义成包含状态和行为的一个实体,对象(object)也称为实例(instance)。

什么是实体:存在于现实世界中并且可以与其他物体区分开来的物体,实际存在的个体

—————————————————————————————————–

对象:

对象是人们要进行研究的任何事物,一切事物都可以认为是对象。

对象具有状态和行为:

  对象具有状态,比如姓名,年龄,性别等。

  对象还有操作,比如吃饭,睡觉,写代码等。

此时,通过对多个同类型的对象分析,我们可以把对象抽象成类

—————————————————————————————————–

类:

具有相同特性(状态)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型

类具有特性,对象的状态,用成员变量来描述,封装数据

类具有功能,对象的行为,用方法来描述。

—————————————————————————————————–

什么是类:类是对象的类型/模板。创建一个对象,就是使用一个类作为构建该对象的基础。

实际上,解释类和对象的关系确实存在着“先有蛋还是先有鸡”的问题,描述类少不了对象,相反,描述对象也少不了类。

不过在面向对象编程里,我们肯定是先有类的。如果没有类,对象就没法实例化

—————————————————————————————————–

对象是类的实例,类是对象的模板




比如下面一个例子:分析出对象和类,以及对象具备的状态和行为。 

 




找多个对象共同的状态和行为:

状态:

            姓名:

            年龄:

            身高:

            体重:

行为:

            唱歌

            跳舞

—————————————

把对象的状态使用成员变量表示,

把对象的行为使用方法表示.


class Person {
 String name;
 int age;
 int height;
 int weight;

 void sing() {}
 void dance() {}
}

3. 3、类的定义:

—————————————————————

[修饰符] class  类名

{

       0~N个成员变量(字段/Field),不要叫属性(JavaBean中特殊的一种成员).

       0~N个方法

}

public class Person {
 //成员变量:这些就是Person类对应的对象的状态(private是修饰符)
 private String name;
 private int  age;
 
 //成员方法:这些就是Person类对应的对象的行为
 void shopping(){
  System.out.println("这是购物的方法");
 }
 void sing(){
  System.out.println("这是唱歌的方法");
 }
 void dance(){
  System.out.println("这是跳舞的方法");
 } 
}





——————————

定义类的注意:

    1):如果类使用了public修饰符,必须保证当前文件名称和当前类名相同.

    2):类名使用名称表示,类表示某一类事物,首字母大写,如果是多个单词组成使用驼峰表示法.

         :EmployeeAdvanceSetting.

    3):在面向对象的过程中,各位定义类的时候,专门为描述对象提供一个类,该类不需要main方法.

       我们专门再定义一个测试类/演示类来运行程序.

4. 4、对象的创建和操作

1):根据类来创建对象的语法:

     
类名  变量 = new 类名();

      比如:Person person =  new Person();

2):给字段设置值:

    对象变量.字段名=该类型的值;

      比如:Person
person =  new Person();



person.name  = “张三”;

person.setName(“张三”);

3):获取字段的值:

    
该字段类型 变量=对象变量.字段值;

       比如:Person person =  new Person();


String   name   =  person.name;

String   name   =  person.getName();


4):通过对象调用方法.

    
对象变量.方法(实参或者无参数);

     比如:Person person =  new Person();


person.doWork();





5. 5、对象的打印比较




对象的打印和比较对象以及匿名对象

————————————————————-

1):对象的打印操作:

    
打印对象的时候,打印出来的效果,:Servant@3294e4f4.

    
类的名称@十六进制的hashCode.

    
其实,我们打印对象,往往关系的是该对象中的数据是多少,这就需要Obejct类toString方法.

public class Person {
 //成员变量:这些就是Person类对应的对象的状态(private是修饰符)
 private int id;
 private String personName;
 private int age;
 
 //成员方法:这些就是Person类对应的对象的行为
 void shopping(){
  System.out.println("这是购物的方法");
 }
 void sing(){
  System.out.println("这是唱歌的方法");
 }
 void dance(){
  System.out.println("这是跳舞的方法");
 } 
 public static void main(String[] args) {
  Person person = new Person();
  System.out.println(person);  //结果是:Person@15db9742
 }
}





2):对象比较操作:

     ==:对于基本数据类型来说,比较的是值.

              对于引用数据类型来说,比较的是在内存中的地址值.

               每次使用new关键字,都表示在堆值新开辟一块内存空间,不同的内存空间,地址值不同.

    
需求:如果对象拥有完全相同的数据,我就想让他们相等.这就需要Object类equals方法.

public class Person {
 //成员变量:这些就是Person类对应的对象的状态(private是修饰符)
 private int id;
 private String personName;
 private int age;
 
 //成员方法:这些就是Person类对应的对象的行为
 void shopping(){
  System.out.println("这是购物的方法");
 }
 void sing(){
  System.out.println("这是唱歌的方法");
 }
 void dance(){
  System.out.println("这是跳舞的方法");
 } 
 public static void main(String[] args) {
  Person person1 = new Person();
  Person person2 = new Person();
  System.out.println(person1==person2);  //结果是:false ,两个对象不相等,比较的是地址值
 }
}





3):对象的生命周期:

    
对象什么时候出生:每次使用new关键字的时候,就会在内存开辟新的空间,此时对象开始存在.

    
对象的结束:当堆中的对象,没有被任何变量所引用,此时该对象就成了垃圾,就等着垃圾回收器(GC)来回收该垃圾,当被回收的时候,对象被销毁了,回收垃圾的目的,释放更多的内存空间.

4):匿名对象:没有名称的对象,创建对象之后没有赋给某一个变量.

     
new Person();//匿名对象,匿名对象只是在堆中开辟一块新的内存空间,但是没有把该空间地址赋给任何变量.

     
因为没有名称,匿名对象仅仅只能使用一次,一般的,把匿名对象作为方法的实参传递.

public class Person {
 //成员变量:这些就是Person类对应的对象的状态(private是修饰符)
 private int id;
 private String personName;
 private int age;
 
 //成员方法:这些就是Person类对应的对象的行为
 void shopping(){
  System.out.println("这是购物的方法");
 }
 void sing(){
  System.out.println("这是唱歌的方法");
 }
 void dance(){
  System.out.println("这是跳舞的方法");
 } 
 public static void main(String[] args) {
  new Person().dance();//匿名对象,没有名字,只能使用一次
 }
}










5.1.1.1.1.


     
















转载请注明:CodingBlog » java面向对象

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情