(接上篇博文:C功底挑战Java菜鸟入门概念干货(一))

一、Java面向对象程序设计-类的基本形式

1、“类”是把事物的数据与相关的功能封装在一起,形成的一种特殊结构,用以表达对真实世界的一种抽象概念。 
2、Java 把数据成员称为 field(属性),把方法成员称为 method(方法)。 
3、由类所创建的对象称为 instance,译为“实例”。 
4、创建属于某类的对象,可通过下面两个步骤来达成:

(1)、声明指向“由类所创建的对象”的变量。

(2)、利用 new 创建新的对象,并指派给步骤一中所创建的变量。 
5、要访问到对象里的某个属性(field)时,可通过“对象名称.属性”语法来实现,如果要调用封装在类里的方法,则可通过“对象名称.method”语法来实现。 
6、有些方法不必传递任何数据给调用端程序,因此是没有返回值的。若方法本身没有返回值,则必须在方法定义语句前面加上关键字 void。 
7、私有成员(private member)可限定类中的属性,被限制成私有的属性仅能供同一类内的方法所访问。 
8、类外部可访问到类内部的公有成员(public member)。 
9、“封装”(encapsulation):是把属性和方法包装在一个类内以限定成员的访问,以起到保护数据的作用。 
10、构造方法可视为一种特殊的方法,它的主要作用是为所创建的对象赋初值。 
11、构造方法的名称必须与其所属的类的类名称相同,且不能有返回值。 
12、从某一构造方法内调用另一构造方法,是通过 this()  这个关键字来完成的。 
13、构造方法有 public 与 private 之分。声明为 public 的构造方法可以在程序的任何地方被调用,所以新创建的对象都可以自动调用它。而被声明为 private 的则无法在该构造方法所在的类以外的其它地方被调用。
14、如果构造方法省略不写,Java 则会自动调用默认的构造方法(默认的构造方法没有任何参数)。 
15、“基本类型的变量”是指用 int、double 等关键字所声明的变量,而由类声明而得的变量,称之为“类类型的变量”,它是属于“非基本类型的变量”的一种。 
16、对象也可以用数组来存放,但必须有下面两个步骤:

(1)、声明类类型的数组变量,并用 new 分配内存空间给数组。

(2)、用 new 产生新的对象,并分配内存空 间给它。

17、如果在类 Outer 的内部再定义一个类 Inner,此时类 Inner 称为内部类(inner class),而类 Outer 则称为外部类(outer class)。

二、Java面向对象程序设计-类的继承

1、通过 extends 关键字,可将父类的成员(包含数据成员与方法)继承到子类。 
2、Java 在执行子类的构造方法之前,会先调用父类中无参的构造方法,其目的是为了对继承自父类的成员做初始化的操作。 
3、父类有数个构造方法时,如要调用特定的构造方法,则可在子类的构造方法中,通过 super()这个关键字来完成。 
4、this()是在同一类内调用其它的构造方法,而 super()则是从子类的构造方法调用其父类的构造方法。 
5、this()除了可用来调用同一类内的其它构造方法之外,如果同一类内“实例变量”与局部(local)变量的名称相同时,也可利用它来调用同一类内的“实例变量”。 
6、this()与 super()其相似之处:

(1)当构造方法有重载时,两者均会根据所给予的参数的类型与个数,正确地执行相对应的构造方法。

(2)两者均必须编写在构造方法内的第一行,也正是这个原因,this()与 super()无法同时存在同一个构造方法内。 
7、“重载”(overloading),它是指在相同类内,定义名称相同,但参数个数或类型不同的方法,因此 Java 便可依据参数的个数或类型调用相应的方法。 
8、“复写”(overriding),它是在子类当中,定义名称、参数个数与类型均与父类相同的方法,用以复写父类里的方法。 
9、如果父类的方法不希望子类的方法来复写它,可在父类的方法之前加上“final”关键字,如此该方法便不会被复写。 
10、final 的另一个功用是把它加在数据成员变量前面,如此该变量就变成了一个常量(constant),如此便无法在程序代码中再做修改了。 
11、所有的类均继承自 Object 类。 
12、复写 Object 类中的 equals() method 可用来比较两个类的对象是否相等。 
13、Java 可以创建抽象类,专门用来当做父类。抽象类的作用类似于“模板”,其目的是依据其格式来修改并创建新的类。 
14、抽象类的方法可分为两种:一种是一般的方法,另一种是以abstract关键字开头的“抽象方法”。“抽象方法”并没有定义方法体,而是要保留给由抽象类派生出的新类来定义。 
15、利用父类的变量数组来访问子类的内容的较好的做法是:

(1)先创建父类的变量数组; 
(2)利用数组元素创建子类的对象,并以它来访问子类的内容。 
16、抽象类不能直接用来产生对象。 
17、接口的结构和抽象类非常相似,它也具有数据成员与抽象method,但它与抽象类有两点不同:

(1)、接口的数据成员必须初始化。

(2)、接口里的方法必须全部都声明成 abstract。 
18、利用接口的特性来打造一个新的类,称为接口的实现(implementation)。 
19、Java并不允许多重继承。 
20、接口与一般类一样,均可通过扩展的技术来派生出新的接口。原来的接口称为基本接口或父接口;派生出的接口成为派生接口或子接口。通过这种机制,派生接口不仅可以保留父接口的成员,同时也可以加入新的成员以满足实际的需要。 
21、Java对象的多态性分为:向上转型(自动)、向下转型(强制)。 
22、通过instanceof 关键字,可以判断对象属于那个类。 
23、匿名内部类(anonymous inner class)的好处是可利用内部类创建不具有名称的对象,并利用它访问到类里的成员。

(待续见下片博文:C功底挑战Java菜鸟入门概念干货(三))

C功底挑战Java菜鸟入门概念干货(二)的更多相关文章

  1. C功底挑战Java菜鸟入门概念干货(一)

    一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行.  2.Byte-codes 最大的好处是——可越平台运行,可让“一次编写,处处运行”成为可能.  3.使用 ...

  2. JAVA菜鸟入门HelloWorld

    一:HelloWorld进入菜鸟心中 1.最原始的一切从HelloWorld开始 首先本机安装JDK,配置好path环境变量 用文本编辑器editplus或notepad++创建一个HelloWorl ...

  3. 微信小程序之菜鸟入门教学(二)

    昨天学习了一些简单的概念,今天开始实际操作,通过搭建简单的计算器来学习小程序的架构 一.小程序框架 程序框架如上图所示.由此可见,框架的基本构成为: 1. app.js . app.wxss 2. a ...

  4. Java Web入门学习(二) Eclipse的配置

    Java Web学习(二) Eclipse的配置 一.下载Eclipse 1.进入Eclipse官网,进行下载 上图,下载Eclipse IDE for JaveEE Developers 版本,然后 ...

  5. Ubuntu菜鸟入门(十二)—— 主题美化

    一.unity-tweak-tool 1.软件介绍 调整 Unity 桌面环境,还是推荐使用Unity Tweak Tool,这是一个非常好用的 Unity 图形化管理工具,可以修改工作区数量.热区等 ...

  6. Java反射01 : 概念、入门示例、用途及注意事项

    1.Java反射定义 本文转载自:https://blog.csdn.net/hanchao5272/article/details/79360452 官方定义如下: Reflection enabl ...

  7. 《JAVA 从入门到精通》 - 正式走向JAVA项目开发的路

    以前很多时候会开玩笑,说什么,三天学会PHP,七天精通Nodejs,xx天学会xx ... 一般来说,这样子说的多半都带有一点讽刺的意味,我也基本上从不相信什么快速入门.我以前在学校的时候自觉过很多门 ...

  8. Java快速入门-02-基础篇

    Java快速入门-02-基础篇 上一篇应该已经让0基础的人对 Java 有了一些了解,接一篇更进一步 使用 Eclipse 快捷键 这个老师一般都经常提,但是自己不容易记住,慢慢熟练 快捷键 快捷键作 ...

  9. Java快速入门-01-基础篇

    Java快速入门-01-基础篇 如果基础不好或者想学的很细,请参看:菜鸟教程-JAVA 本笔记适合快速学习,文章后面也会包含一些常见面试问题,记住快捷键操作,一些内容我就不转载了,直接附上链接,嘻嘻 ...

随机推荐

  1. C和C++运算符 (转)

    这里是C和C++语言的运算符列表.所有列出的运算符皆含纳于C++:第三个栏目里的内容也使用C来描述.应当注意的是C不支持运算符重载. 下列运算符在两个语言中都是顺序点(运算符未重载时): && ...

  2. sql语句中特殊函数的用法

    1.concat CONCAT(字串1, 字串2, 字串3, ...): 将字串1.字串2.字串3,等字串连在一起. 例如: Geography 表格 region_name     store_na ...

  3. Labview学习之程序Web发布

    Labview学习之程序Web发布 1. LabVIEW Web服务器     在LabVIEW开发环境中,自身带了一个已连接好的Web服务器.LabVIEW Web服务器除了与其他Web服务器一样能 ...

  4. spring 入门篇

    spring 入门篇         相对于Hibernate(冬眠),Spring(春天),具有更多的诗意与希望的感觉,是为了解决传统J2EE开发效率过低.开发商之间不统一.没有真正实现“写一次到处 ...

  5. MySQL 基础学习

    http://www.w3school.com.cn/sql/ 1.limit x,y 或 limit z  :选取从x开始的y条数据  或  选取最开始的 z条数据 , 2.like '%N%' : ...

  6. 在CentOS 7 / Gnome 3 双屏时设置主屏

    在Windows中设置扩展显示器为主屏的方式非常清楚,但在Linux中就不是那么明显了,下面介绍如何完成这个设置 ------------------------------------------- ...

  7. 安卓自定义view_GDI绘图 _2d绘图_canvas绘图

    2014年到2016年 发生了很多事情,如今已成定局,现在想忘掉这些烦恼的事情,找点以前想干没有干的事情来做,塞满大脑就不去想了. 之前,一直想做一款挂机类游戏,各种平台和开发语言都选择过了,从htm ...

  8. 用python 10min手写一个简易的实时内存监控系统

    简易的内存监控系统 本文需要有一定的python和前端基础,如果没基础的,请关注我后续的基础教程系列博客 文章github源地址,还可以看到具体的代码,喜欢请在原链接右上角加个star 腾讯视频链接 ...

  9. DjangoORM一对多&多对多操作

    简要说明 通过操作对象的方式操作数据库 详细步骤 models.py的结构是: 如果models.py中外键定义没有写 related_name='student_teacher', 可以直接用 st ...

  10. Angular form

    参考 http://blog.xebia.com/2013/10/15/angularjs-validating-radio-buttons/ http://stackoverflow.com/que ...