Java 面向对象(一)

一、Java面向对象

java是一个面向对象语言,有句话说:“java一切皆对象”。

我们运行代码,需要建立一个类,类里面定义一个main函数,才能运行;

我们用到的Scanner和Random需要用到java里面写好的类,这操作也叫导包。

因为有各种各样写好的、性能优越的类存在,使得java使用起来更加轻松,大多时候我们并非学习java的语法,而是学习该如何使用这个类,这时候jdk的api(查看各种库的方法的作用)就显得比较重要了,可以自己进行下载,作为一个编程必备的软件

1.1何为面向对象

由属性和方法构成的类为对象,即类就是对象

在生活中的对象请添加图片描述
现实中的对象多数来自于“模板”,程序中的对象也应该具有“模板”。
请添加图片描述
汽车为模板的时候叫对象,根据模板实现出来的一辆汽车叫实例化

二、对象定义与创建
2.1定义

请添加图片描述

//类名开头需要大写
public class 类名{
​ 类属性 – 特征
​ 类方法 – 行为
​ //类方法: public 属性 名字(参数){ //如 public int Num(int i){return 1};
}

public class Dog {     //类名要大写
    String bread;
    int age;
    String sex;
    String furColor;

    public void information(){
        System.out.println(bread + "今年"+age+"岁,"+"性别为" + sex+",毛色为"+furColor);
    }
    public void eat(){
        System.out.println(bread + "eating...");
    }
    public void sleep(){
        System.out.println(bread+ "sleeping...");
    }
}
2.2创建

类名 名字 = new 类名()

new就是让计算机知道,给后面的类(写在new后面的类名)开辟一个空间,如果有多个new,那么他们就开辟多个空间,他们不相干

public class Demo01 {
    public static void main(String[] args) {
        Dog dog1 = new Dog();
        Dog dog2 = new Dog();
        Dog dog3 = new Dog();
    }
}
//我们开辟了三个属于Dog的空间,也就是实现了三个Dog,他们间是不相干的
2.2.1实例化Dog

上面的也是实例化,但只里面的属性并没有赋值和方法调用,下面认真实例化一遍

public class DogText {
    public static void main(String[] args) {
        //实例化Dog,赋值给dog
        Dog dog = new Dog();

        //dog属性赋值
        dog.bread = "泰迪"; //品种
        dog.age = 8;
        dog.sex = "公";
        dog.furColor = "棕色";

        //dog方法调用
        dog.information();
        dog.eat();
        dog.sleep();
        System.out.println("--------------------------------------");

	//实例化另一个Dog,赋值给dog2
		Dog dog2 = new Dog();// The value of the local variable dog2 is not used
		
		//dog2赋值
		dog2.breed = "哈士奇";
		dog2.age = 2;
		dog2.sex = "母";
		dog2.furColor = "灰白";
		
		//dog2方法调用
		dog2.information();
		dog2.eat();
		dog2.sleep();
    }
}

结果:
泰迪今年8岁,性别为公,毛色为棕色
泰迪eating...
泰迪sleeping...
---------------
哈士奇今年2岁,性别为母,毛色为灰白
哈士奇eating...
哈士奇sleeping...

三、构造方法(重点)

构造方法,是当类实例化之后即立马执行的

上面的例子中,如果一个个赋值是非常麻烦的,但如果在实例化对象时候就把值传入进去,那么就方便得多了

构造方法:
类名(){代码块}

public class Dog {
    String bread;
    int age;
    String sex;
    String furColor;

    public Dog(String bread, int age, String sex, String furColor) {
        this.bread = bread;
        this.age = age;
        this.sex = sex;
        this.furColor = furColor;
    }

    public void information(){
        System.out.println(bread + "今年"+age+"岁,"+"性别为" + sex+",毛色为"+furColor);
    }
    public void eat(){
        System.out.println(bread + "eating...");
    }
    public void sleep(){
        System.out.println(bread+ "sleeping...");
    }
}

在上面构造函数中,this.属性指的是本类的属性,因为传入的参数名字和类里面的属性名字相同了,如果不加this将不会赋值(可以自己尝试一下)

调用

public class Demo02 {
    public static void main(String[] args) {
        Dog dog = new Dog("泰迪", 18, "公", "红色");
        dog.information();
        dog.sleep();
        dog.eat();
    }
}
结果:
泰迪今年18岁,性别为公,毛色为红色
泰迪sleeping...
泰迪eating...

构造方法既然是方法,那它也是遵循方法重载的定理的。

在一般时候,如果写了一个有参的构造方法,那无参的构造方法最好写上,不然有些情况会报错。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值