七,Java面向对象

Java面向对象

一.包名的推荐规范

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

二.面向对象

优点:稳定性;可扩展性;可重用性
  对象:用来描述客观事物的一个实体;
  类:具有相同属性和方法的一组对象的集合

1.一个简单的类例:
    属性和方法:(属性未赋初值,整型默认为0,字符串类型默认为null,double型为0.0)
在这里插入图片描述

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

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

package com.imooc.animals;

public class Cat {
    //成员属性:昵称,年龄,体重,品种
    String name;
    int month;
    double weight;
    String species;
    //成员方法
    public void eat(){
        System.out.println("我吃东西了");
    }
    public void run(){
        System.out.println("我跑了");
    }
}
package com.imooc.animals;

public class Cattest {

    public static void main(String[] args) {
        // 对Cat实例化
        Cat cat=new Cat();
        //属性赋值,开始未赋值,默认为0
        //cat.month=12;
        //调用方法
        cat.eat();
        cat.run();
        System.out.println(cat.name);
        System.out.println(cat.month);
        System.out.println(cat.weight);
        System.out.println(cat.species);
        /*输出:
              我吃东西了 
            我跑了
            null
            0
            0.0
            null
         */


    }

}

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

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

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

图1

在这里插入图片描述

图2

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

三,.构造方法

1.构造方法与类名相同且没有返回值;
    2.只能在对象的实例化过程中被调用;
    3.当没有指定构造方法时,系统会自动添加无参构造方法;
    4.当有指定构造方法,无论是有参和无参,系统都不会自动添加构造方法;
    5.一个类可以有多个构造方法

在这里插入图片描述

例1:无参构造方法

package com.imooc.animals;

public class Cat {
    //成员属性:昵称,年龄,体重,品种
    String name;
    int month;
    double weight;
    String species;
    //无参构造(默认是无参)
    public Cat(){
        
    }
    //成员方法
    public void eat(){
        System.out.println("我吃东西了");
    }
    public void run(){
        System.out.println("我跑了");
    }
}

例2:有参构造方法

注意:赋值满足就近原则

解决方法:

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

this关键字:表示当前对象
在这里插入图片描述

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

通过this()调用构造方法必须放在方法体内的第一行。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值