Java面向对象

一.包名的推荐规范

  1.英文小写字母;2.域名的倒序

二.面向对象

  优点:稳定性;可扩展性;可重用性

  对象:用来描述客观事物的一个实体;

  类:具有相同属性和方法的一组对象的集合

  1.一个简单的类例:

    属性和方法:(属性未赋初值,整型默认为0,字符串类型默认为null,double型为0.0)

    单一职责原则(单一功能原则):有且只有一个引起功能变化的原因【注:如果在一个类中,承担的功能越多,交融和耦合性越高,被复用的可能性越低,而且因为耦合性高,类中的一个职责发生变化时有可能引起其他职责变化】,因此在程序中尽量把不同的职责(引发变化的不同原因)封装在不同的类里面。

    如例:把与猫相关的属性和方法放在一个类,而把实例化测试放在另一个类里面

 1 package com.imooc.animals;
 2 
 3 public class Cat {
 4     //成员属性:昵称,年龄,体重,品种
 5     String name;
 6     int month;
 7     double weight;
 8     String species;
 9     //成员方法
10     public void eat(){
11         System.out.println("我吃东西了");
12     }
13     public void run(){
14         System.out.println("我跑了");
15     }
16 }
View Code
 1 package com.imooc.animals;
 2 
 3 public class Cattest {
 4 
 5     public static void main(String[] args) {
 6         // 对Cat实例化
 7         Cat cat=new Cat();
 8         //属性赋值,开始未赋值,默认为0
 9         //cat.month=12;
10         //调用方法
11         cat.eat();
12         cat.run();
13         System.out.println(cat.name);
14         System.out.println(cat.month);
15         System.out.println(cat.weight);
16         System.out.println(cat.species);
17         /*输出:
18               我吃东西了 
19             我跑了
20             null
21             0
22             0.0
23             null
24          */
25 
26 
27     }
28 
29 }
View Code

  2.实例化对象过程:

    2.1声明对象:Cat cat(在内存的栈空间里开辟了一个区域取名为cat,此时为一个空盒子null,无法操作【未被初始化】)

    2.2实例化对象:new Cat()(在内存的堆空间里开辟了一块空间,完成了对象的初始化操作);

            还可以直接 Cat cat2=cat(相当于一个房子有两把钥匙,并给不同的人,指向的是内存中的同一区域)【如图2】

图1

图2

    注:Python实例化过程是先调用__new__(静态方法)方法实例化对象,并返回对象,在调用__init__(构造方法)完善对象,__init__无返回值。

   3.构造方法:

    1.构造方法与类名相同且没有返回值;

    2.只能在对象的实例化过程中被调用;

    3.当没有指定构造方法时,系统会自动添加无参构造方法;

    4.当有指定构造方法,无论是有参和无参,系统都不会自动添加构造方法;

    5.一个类可以有多个构造方法

    例1:无参构造方法

 1 package com.imooc.animals;
 2 
 3 public class Cat {
 4     //成员属性:昵称,年龄,体重,品种
 5     String name;
 6     int month;
 7     double weight;
 8     String species;
 9     //无参构造(默认是无参)
10     public Cat(){
11         
12     }
13     //成员方法
14     public void eat(){
15         System.out.println("我吃东西了");
16     }
17     public void run(){
18         System.out.println("我跑了");
19     }
20 }
View Code

     例2:有参构造方法

      注意:赋值满足就近原则

      解决方法:

        可以修改参数为不同的名字(缺点:麻烦,需要刻意取不同的名,对照麻烦);

        this关键字:表示当前对象

注:可以定义一个与构造方法相同名的普通方法(语法没影响,但是不推荐)

            通过this()调用构造方法必须放在方法体内的第一行。

原文地址:https://www.cnblogs.com/lyq-biu/p/10672999.html