java手记---package

///程序包就是命名的类组。很像目录。是名称空间。类名在其中必须唯一

///sgsware程序包-raytracing子程序包-Mailbox.java中的Mailbox.class
///其全名为sgsware.raytracing.Mailbox
///程序包名为小写。

c:>   javac -d /路径 文件名.java         ///编译程序包中的java文件
///这时把编译出的*.class 放在这个路径下。

c:>   java -classpath 路径 程序包名.文件/使用此文件。

package 名称;  这样编译时就把这个文件的.class放在了这个名称中

package mypackage;
import mypackage.*;/程序员永远不用这样定义。
/一个类自动导入其程序包中的其他类。

///在程序包中的类其default类型(包访问类型)为非public型
///在同一程序包中的类在其他类中的实例可以调用自己类中的任何类型。

///一个受保护的方法可以由属主类的任何子类中被超越。即使子类在其他的程序包中。
//可以被子类的当前实例访问
package cc;
public class Cctest
{
protected int  id;
protected void show()
{
System.out.println(id);
}
}

package dd;
import cc.Cctest;
public class C extends Cctest
{
float salary;
protected void show(C A)      //在子类中被超越。
{
System.out.println(A.id);///子类实例可用。
System.out.println(A.salary);
}
}//this is right.
//一个受保护的数据可以被属主类的任何子类中调用。但不能被超类中的实例访问。
//但可以被子类的实例访问。

package dd;
import cc.Cctest;
public class C extends Cctest
{
float salary;
protected void show(Cctest A)
{
System.out.println(A.id);//this is wrong.
}
}

超类版本访问                                                        子类版本访问
public                                                                    public
protected                                                                 public    protected
default                                                                   public    protected    default
private                                                                   public    protected    default    private

///把main放在超类中。这样以后可以用超类的引用子类实例的超越的所有类型的函数。

///终结类不能子类化,终结方法不能被超越。终结变量得到初始化后不能被修改。


private void show()///在超类中。
{
System.out.println("a = " + a + " b = " + b + " c = " + c);
}
public void show()///在子类中。
{
System.out.println(add());
}
PrivateClass pri1 = new SubPrivate();//超类引用子类。
pri1.show();调用的是超类中的show().


/但如果超类中的show()是非private得则调用的是子类中的show().



/接口如果是公用的则在任何地方的任何代码中都可以使用。
/接口如果不是公用的则在它的程序包中使用。它不能是private/protected



接口中可以不声明public,但实现的时候必须有public声明.


///接口的引用只能用接口中声明的方法。
package Interface;
interface OverrideB
{
void b();
void c(int s);
}
package Interface;

interface A
{
void b();
int c(int s);
}
package Interface;
public class Override implements OverrideB,A
{
public void b()//这段代码是正确的.但软件工程不要求这样做.
{

}
public int c(int s)//这里不正确.两个接口中的方法可以函数签名和返回值都相同.但不能只有返回值不同.
return 3;
}
}


/一个接口可以继承多个接口使用extends关键字
interface AandB extends A,B
{

}


/一个接口不能继承一个虚拟类
public abstract class AbClass
{
abstract void draw();
}
package Interface;
interface AbInterface extends AbClass
{

}

//虚拟类可以实现接口.
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值