您现在的位置是:首页 > 文章详情

Java入门(一)---面向对象

日期:2018-07-21点击:338
img_ed96d386001e324ceebed5903fa4fbf6.jpe
二狗子.jpeg

面向对象:

关注现实存在的事物的各个方面的信息,从对象的角度出发,根据事物的特征进行程序设计。

类,是抽象的概念,可以理解为一个模型,用来确定对象将会拥有的特征(属性)和行为(方法)
对象,是类的实例表现形式,一个实体。

  • 类的属性:对象具有的各种静态特征 (对象有什么)
  • 类的方法:对象具有的各种动态行为 (对象能做什么)

实例化

定义一个Dog类,有两个属性nameage,还有两个方法,run()eat()
新建文件Dog.java

public class Dog { //成员属性:name age String name; int age; //成员方法: run eat public void run(){ System.out.println("跑"); } public void eat(){ System.out.println("吃"); } } 

接着,再定义一个用来测试的类, TestDog.java

1 public class TestDog { 2 public static void main(String[] args){ 3 Dog dog = new Dog(); 4 dog.name = "灰灰"; 5 dog.age = 2; 6 System.out.println(dog.name); 7 System.out.println(dog.age); 8 dog.eat(); 9 dog.run(); } } 

下边来看下TestDog.java做了些什么:
第一行第二行的基础部分这里不再赘述,直接看第三行,实例化对象 Dog dog = new Dog();
实例化对象的过程可以分为两部分:

  • 声明对象 Dog dog :在内存的栈空间开辟一块空间, 此时对象是空的, 无法使用
  • 实例化对象 new Dog() : 在内存的堆空间开辟一块空间,完成具体对象初始化操作

img_3cd1df3fce0a5416013949c505ea4d8a.png
image.png

通过赋值操作,把堆空间的内存地址存放到了 dog中:
Dog dog = new Dog();
关于对象的实例化操作,是通过new + 构造方法的形式来完成的。

构造方法

构造方法也称为构造函数、构造器:
1.构造方法与类同名且没有返回值
2.只能在对象实例化的时候调用(配合 new调用)
3.当没有指定构造方法时,系统会自动添加无参的构造方法
4.当指定了构造方法,无论有参数还是无参数的构造方法,都不会自动添加无参数的构造方法
5.一个类中可以有多个构造方法,---构造方法重载,java会根据参数去自动选择。

上边的Dog.java没有定义构造方法,在调用时系统自动帮我们添加无参数的构造方法,下边我们添加上有参数的构造方法:

public class Dog { String name; int age; //带参数的构造方法 public Dog(String name, int age){ } public void run(){ System.out.println("跑"); } public void eat(){ System.out.println("吃"); } } 

当我们使用带参数的构造函数来进行初始化的时候,为了避免产生赋值错误的情况,可以使用this关键字

this关键字

this代表当前对象的默认引用,上述代码,dog就是当前对象
更改Dog.java

public class Dog { String name; int age; //带参数的构造方法 public Dog(String name, int age){ //把传入的 name 赋值给局部变量 name this.name = name; //把传入的 age 赋值给局部变量 age this.age = age; } public void run(){ //调用成员方法eat,(这里只是演示this的使用 不关心逻辑) this.eat(); System.out.println("跑"); } public void eat(){ //也可以不用this 直接调用成员方法run run(); System.out.println("吃"); } } 

补充知识

我们在类中定义变量后,其实变量是有初始值的,代码说明:
新建Demo.javaTestDemo.java

public class Demo { String name; int age; double d; boolean n; } 
public class TestDemo { public static void main(String[] args){ Demo de = new Demo(); System.out.println(de.name); System.out.println(de.age); System.out.println(de.d); System.out.println(de.n); } } 运行结果: null 0 0.0 false 

上边Demo.java中定义了四个不同类型的变量,直接在TestDemo.java中调用并打印,可看到变量的默认值。

下图展示了变量定以后的初始值:


img_5e3b10f2d0b80404ca8e810771c30f21.png
image.png
原文链接:https://yq.aliyun.com/articles/654554
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章