java基础入门菜鸟入门学习第十八天——Java面向对象(十二)

Java面向对象——包和导包

5.1java 包(package)

5.1.1java包的定义
  • 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间
5.1.2Java包格式
  • java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等,通常把地域名地址反过来,使用小写字母来命名,文件夹之间用.隔开,
    • 包语句格式:
package pkg1.pkg2.pkg3....

例如:创建一个包编写一个Animals.java文件

package net.java.util;
public clasS Animals{
    public static void main(String[] args){
        System.out.println("我是第一个包");
    }
}
  • 保存路径:某盘区/net文件夹/java文件夹/util文件夹/Animals.java文件
5.1.3Java创建包规则

先让我们想一下在win10的操作系统怎么样创建文件夹的?为什么不能创建两个相同名字的文件夹?

  • 在windows操作系统下的某个文件夹下是无法创建同名的文件夹或者是文件的。同名的情况下是无法精确区分同名文件的。在windows系统下A文件下创建一个a.txt;在B文件下创建一个a.txt。这是允许的。为什么呢?在系统下区分文件的方式是通过目录+文件名的方式。
    • 对于A下的a.txt而言->c:\A\a.txt
    • 对于B下的a.txt而言->c:\B\a.txt

Java中创建包注意事项:

  • 通过package这个关键字来指定当前类所处的包
  • package包声明应该在源文件的第一行,每个源文件只能有一个包声明,这个文件中的每一个类型都应用它
  • 编写代码是给类起名要注意不要和JDK内置的类同名了。
  • 通过全限定名去唯一标示一个类,java中的最小的单位就是类。
  • java中的对象在通过输出语句直接输出是打印的内容是全限定名(包名.类名)。

代码演示:

package com.pxcoder.myproject4;
public class Test01{
	public static void main(String[] args){
		System.out.println(new Test01());
	}
}
执行结果:
com.pxcoder.myproject4.Test01@15db9742
5.1.4导包

大家先想一下,怎么样在一类中如何使用另一个类中的内容?这个时候就需要导包了

i.正常导包

代码演示:`

package com.mage.oop05.im;
//导入jdk中的包
import java.util.Scanner;
//导入另一个包
import com.mage.oop05.pg.Cat;
//Cat和Test不在同包下
public class Test{
	public static void main(String[] args){
		Cat c=new Cat();
		Scanner input=new Scanner(System.in);
	}
}

导包的条件:

  • 当两个类在同包下时,可以不需要导包。
  • 不同包下的类要想使用必须要导包。
  • 在package下面,类声明的上面通过import关键词+导入的类的全限定名。
  • 在java中java.lang包下的类是不需要导包的,可以直接使用。
  • 编写代码时如果出现需要导包的时候,可以使用ctrl+1来完成快速导包。
  • import java.util.*;导入java.util下的所有内容。

导包的目的就是为了能够使用其它包下的类。

ii.静态导包(jdk1.7之后的静态导入)

代码演示:

import static java.lang.Math.PI;
public class Test{
	public static void main(String[] args){
		System.out.println(random());
		System.out.println(PI);
	}
}
  • 通过静态导入可以导入当前类的静态内容。使用时,不需要用类名.方法();
iii.区分同名类

代码演示:

import java.util.Date;
public class Test{
	public static void main(String[] args){
	Date d1=new Date();
	java.sql.Dated2=newjava.sql.Date(1231L);
	System.out.println(d1+"=="+d2);
	}
}
  • import语句不能导入同名的类。
  • 为了区分同名类,当出现同名类时,一个类通过import导入,另外一个通过全限定名去使用。

5.2封装修饰符

代码演示:

package com.mage.china;
public class F{
    //Public/protected/default/private 
	public String name;
	public static void main(String[] args){
		//本类中的属性
		F f=new F();
		System.out.println(f.name);
		}
	}
package com.mage.china;
public class S extends F{
	public static void main(String[] args){
		//通过子类访问父类中public修饰的属性
		S s=new S();
		System.out.println(s.name);
    }
}
package com.mage.china;
public class Test{
	public static void main(String[] args){
	//测试同包下无关的类是否可以访问public修饰的属性
		F f=new F();
		System.out.println(f.name);
    }
}
package com.mage.en;
importcom.mage.china.F;
public class S extends F{
	public static void main(String[] args){
		//创建S对象访问不同包中父类中的public修饰的属性
		S s=new S();
		System.out.println(s.name);
    }
}
package com.mage.en;
import com.mage.china.F;
public class Test{
	public static void main(String[] args){
        //创建f对象访问不同包不是父类中的public修饰的属性
		F f=new F();
		System.out.println(f.name);
    }
}
修饰符/可见性本类同包子类同包异类异包子类异包异类i
public
protected
default(默认的)
private
  • 封装性在一定程度上其实打破了继承性
  • 不通过修饰符的可见性不同,在一定程度上保证了类的安全性。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

QZP51ZX

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值