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

(接上篇博文: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菜鸟入门概念干货(三))

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工匠若水

看完有帮助?不妨贡献一根辣条~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值