每天简单JAVA教学:Modifier

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

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

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


为了弄明白怎么回事,我们需要做个稍微复杂一点的实验,首先大家创建以下的类:
每天简单JAVA教学:Modifier

然后,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]
    除了第一点会在所有类中都成功之外,其它的几条在上面几个类的实验中应该都只会在某个类中会成功。

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


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

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

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


    好了,今天就到此为止,谢谢大家观看。

    你可能感兴趣的:(java,apple)