Java入门(一)---面向对象
面向对象:
关注现实存在的事物的各个方面的信息,从对象的角度出发,根据事物的特征进行程序设计。
类
类,是抽象的概念,可以理解为一个模型,用来确定对象将会拥有的特征(属性)和行为(方法)
对象,是类的实例表现形式,一个实体。
- 类的属性:对象具有的各种静态特征 (对象有什么)
- 类的方法:对象具有的各种动态行为 (对象能做什么)
实例化
定义一个Dog
类,有两个属性name
和age
,还有两个方法,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() : 在内存的
堆空间
开辟一块空间,完成具体对象初始化操作
通过赋值操作,把堆空间的内存地址存放到了
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.java
和TestDemo.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中调用并打印,可看到变量的默认值。
下图展示了变量定以后的初始值:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Lua IDE工具-Intellij IDEA+lua插件配置教程(Chianr出品)
Lua 编译工具IDE-Intellij IDEA 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar —— 心分享、心创新!助力快速配置与完成 Intellij +Lua 插件的安装、配置为新手节省宝贵的时间,避免采坑! Chinar 教程效果: 1 Description —— 描述 2 Website —— 网站 3 Video —— 视频 4 Activate —— 激活Resharper 支持 May Be —— 搞开发,总有一天要做的事! 全文高清图片,点击即可放大观看 (很多人竟然不知道) 1 Description —— 描述 做热更新,我们经常会遇到一个问题 那就是 Lua 代码怎么就这么难写 / 费劲 / 花式报错 外加各种不提示! (能用记事本写代码的大神,可以关闭本页面了!) 我们写 C# / JavaScript 等一些 代码非常方便,效率很高 那是因为 Visual Studio / Android Studio /Intellij 为我们提供了一个非常...
- 下一篇
Google 罚款将创新高!Android 垄断或被打破
美国互联网巨头正在受到欧盟的严厉审查。有消息称,这两天内,欧盟将对谷歌通过安卓移动操作系统滥用其主导地位的行为做出最终裁决。这也是欧盟针对该公司反垄断调查中最重要、涉及罚金最高的一项。 这一罚款源于谷歌借助自己的安卓智能手机系统保护自己搜索引擎的垄断行为,本次新的罚款金额预计至少将超过去年24亿欧元的罚单。去年谷歌因为线上购物工具搜索违反欧盟相关反垄断法律规定,被开出20年来消费科技反垄断领域最大金额罚单。 针对谷歌非法迫使智能手机制造商安装谷歌App的抱怨,欧洲委员会反垄断负责人Margrethe Vestager三年来一直对谷歌进行着调查。谷歌公司免费为手机制造商提供自己的安卓软件,但是却捆绑了“垄断协议”,如果制造商们使用谷歌的App商城就不得不安装谷歌的网页浏览器和搜索引擎。 谷歌竞争对手宣称,这种垄断导致谷歌占据了欧洲智能手机市场74%的份额,并且对其它具有竞争关系的搜索引擎和浏览器造成了损害。与此同时,谷歌坚称,这些协议让制造商仍然能够免费试用安卓系统并且帮助他们与苹果公司进行竞争。 欧盟委员会有权利对谷歌处以高达母公司Alphabet年贸易额的10%的罚金,或者罚款95亿...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主