每天简单JAVA教学:Modifier

昨天给大家介绍了怎么进行同一个类里面的方法调用,今天将会给大家说一下modifier以及不同类之间怎么进行方法调用。

首先来说一下modifier。它有四个值:public,private,default,protected.其中,当你不声明modifier的时候默认就为default。所以default不需要写出来。而且关键字default实际上也不是modifier,而是用于指示Annotation的默认值(感觉怪怪的。。)。

这个modifier其实是用于指示[b]一个类的成员的访问策略[/b]。就是指示一个类的某个方法,或者字段,更或者是成员类是否可以被外部哪些成员类访问。来看下表:
[table]
|名称|策略|
|public|可以供所有其它类访问|
|private|只能供同一类内部访问|
|default|可以被同一个package下面的其它类访问|
|protected|只可以被自己及子类成员访问|
[/table]

为了弄明白怎么回事,我们需要做个稍微复杂一点的实验,首先大家创建以下的类:
[img]http://dl.iteye.com/upload/attachment/182161/e8fe0eca-6db5-3185-83dd-abd3707b124e.gif[/img]

然后,Modifier.java里面的代码如下:

package modifier;

public class Modifier {
/**
* 公共方法可以供所有其它类访问
*/
public void publicMethod(){
System.out.println("Everybody can visit me.");
}

/**
* 默认访问类型方法,可供同一个package的类访问
*/
void defaultMethod(){
System.out.println("Default method");
}

/**
* 受限类型方法,可以供自己或子类访问
*/
protected void protectedMethod(){
System.out.println("Hello my child!");
}

/*
* 私有类型方法,只能被内部调用
*/
private void privateMethod()
{
System.out.println("I'm a selfish guy:p");
}
}


Neighbour代码:

package modifier;

public class Neighbour {
public void visitDefault(){
new Modifier().defaultMethod();
}
}


ChildClass代码:

package modifier.child;

import modifier.Modifier;

public class ChildClass extends Modifier {
public void visitProtected(){
protectedMethod();
}
}


Foreigner代码:

package modifier.child;

import modifier.Modifier;

public class Foreigner {
public void visitPublic()
{
new Modifier().publicMethod();
}
}


除了以上的代码外,大家还可以自己做以下实验:
[list=1]
[*]在任何类里面通过new Modifier().publicMethod()来访问公共方法
[*]在任何类里面通过new Modifier().protectedMethod()来访问受限方法
[*]在任何类里面通过new Modifier().defaultMethod()来访问默认方法
[*]在任何类里面通过new Modifier().privateMethod()来访问私有方法
[/list]
除了第一点会在所有类中都成功之外,其它的几条在上面几个类的实验中应该都只会在某个类中会成功。

几个类的意义:
[table]
|类名|代表意义|
|Modifier|Modifier测试类|
|Neighbour|Modifier的邻居类,和Modifier同处于一个package层级下。|
|ChildClass|Modifier的继承类,继承了Modifier除了标有private和default以外的所有成员|
|Foreigner|跟Modifier没有任何关系的外类|
[/table]

好了,在我们结束今天的内容之前,大约预习以下后面的内容:
在例子里面,我们需要通过new Modifier()来访问Modifier类里面的东西,为什么呢?因为要访问一个类里面非静态(static)的成员,只有在把这个类的实例(instance)创建出来,分配了实际的地址段给它之后,它的成员才有对应的地址段可供访问。这就好比类是一个房子的设计蓝图,上面描述了房子的方方面面,面积啦,房间布局啦等等。但是如果房子一天没起,这些东西都不会具体话,也没办法住人。

而new Modifier()就好像起房子一样。当然,明天我们说静态方法和恒定方法的时候,会再介绍另一种方法调用的方式。

另外,关于继承。如果我们的一个类需要有某个类的大部分特点的时候,比如要写一个Apple类,而在此之前已经有一个叫Fruit的类了,而且Apple类含有Fruit的所有特征及一些自己特有的特征。那么在解决这类问题的时候就会用到继承的概念。方法很简单,就是在你的类名后面,使用extends关键字把父类和子类联系起来:

public class Child extends Parent


好了,今天就到此为止,谢谢大家观看。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值