第25集 包和访问权限(一)
主要内容.
1.什么是java当中的软件包?
2.为什么要使用软件包?
3.如何给一个类打包?
例如:
开发团队,开发一个系统,分成两个组: A组,B组.
A组, 开发三个类user , student, teacher.
B组,开发三个类 uset , Reguser, unreguser.
麻烦是把两部分合并起来. 合成的时候,问题来了,
两个类都叫user.
两个类不允许放在同一个文件夹下面.
java提供了一种机制,软件包. 给软件打包.
简单的理解., 软件包就是一个文件夹.
编译: javac -d . Test.java (-d 就是根据包名生成文件夹名 -d是目录,' .'表示在那生成文件夹. mars这个文件夹放.目录,就是当前目录.)
javac -d c: Test.java 也是可以的.
执行的时候使用命令: java mars.Test //类的全称发生了变化.
总结
1.软件包为java 类提供了命令空间.
2.打包需要使用package指令.
3.一个类的全名应该是"包名" + "类名".
第26集 包和访问权限(二)
主要内容.
1.java当中的访问权限
2.软件包的导入
java当中的访问权限
1.public 公共权限 可以跨包访问
2.private 私有权限 只能在本类中使用
3.default 包级别访问权限 同一个包中,可以自由访问(同一个包就是 package后面的名字相同)
4.protected 受保护权限.
用实例说明.
第27集 包和访问权限(三)
本集主要内容.
1.访问权限与继承.
2.protected 权限
主要内容.
1.什么是java当中的软件包?
2.为什么要使用软件包?
3.如何给一个类打包?
例如:
开发团队,开发一个系统,分成两个组: A组,B组.
A组, 开发三个类user , student, teacher.
B组,开发三个类 uset , Reguser, unreguser.
麻烦是把两部分合并起来. 合成的时候,问题来了,
两个类都叫user.
两个类不允许放在同一个文件夹下面.
java提供了一种机制,软件包. 给软件打包.
简单的理解., 软件包就是一个文件夹.
//将类放置到一个包当中,需要使用package "包名"
//编译时需要使用-d参数 ,该参数的作用是依照包名生成相应的文件夹.
//一个类的全名应该是"包名" + "." + "类名"
//包名的命名规则:
//1.要求包名所有的字母都要小写;
//2.包名一般情况下,是你的域名倒过来写.
//marsdroid.org
//package org.marsdroid;
//其实爱怎么想就怎么想,但是一般人还是准守这个.
package org.marsdroid;
//package mars;
class Test{
public static void main(String args[]){
System.out.println("hello package");
}
}
package mars;
编译: javac -d . Test.java (-d 就是根据包名生成文件夹名 -d是目录,' .'表示在那生成文件夹. mars这个文件夹放.目录,就是当前目录.)
javac -d c: Test.java 也是可以的.
执行的时候使用命令: java mars.Test //类的全称发生了变化.
总结
1.软件包为java 类提供了命令空间.
2.打包需要使用package指令.
3.一个类的全名应该是"包名" + "类名".
第26集 包和访问权限(二)
主要内容.
1.java当中的访问权限
2.软件包的导入
java当中的访问权限
1.public 公共权限 可以跨包访问
2.private 私有权限 只能在本类中使用
3.default 包级别访问权限 同一个包中,可以自由访问(同一个包就是 package后面的名字相同)
4.protected 受保护权限.
用实例说明.
package org.marsdroid;
//public 可以修饰类,成员变量和成员函数
//public 就是不受任何限制,同一个包当中,或者不同包当中的类都可以自由的访问
//private 可以修饰成员变量和成员函数
//private 只能在本类中使用
//default(不写权限修饰符,就是default权限)可以修饰类,成员变量和成员函数
//default 在同一个包当中,可以自由访问.
//public类
//如果一个类声明为public,那么类名必须与源文件的名字相同.这是java的语法?
//public的作用(跨包访问)
//如果类不是public,就无法从外部包中对其进行访问.(就是两个类不在同一个包中)
//两个类在不同的包中,一个类相调另一个的,类需要public
//两个类在不同的包中如果想要访问一个类的,成员函数,与成员变量的话,那么这些成员函数,成员变量 也需要public
public class Person{
public String name;
public int age;
//
public void introduce(){
System.out.println("name");
}
}
//私有private 变量 ,只能在当前的类中使用, 不管这两个类在不在 一个文件中.
//私有private 函数 ,只能在当前的类中使用, 不管这两个类在不在同一个文件中
//private 类,以后再说.
//default权限,默认,什么都不写.
//default 如果Person和Test在同一个包中,可以任意使用,Test可以调用Person这个类的变量与函数.
//default 如果Person和Test不在同一个包中,Test不可调用Person这个类的变量与函数.
//default 就是包访问权限.
/******************************************************************************************/
package com.marsdroid;
import org.marsdroid.Person;
//如果有多个包需要导入可以使用通配符号*
// import ort.marsdroid.*;
class Test{
public static void main(String args[]){
//由于person,test不在一个包中,person要写全名
// org.marsdroid.Person p = new org.marsdroid.Person();
Person p = new Person();
//包导入后import org.marsdroid.Person, 可以直接这样写
p.name = "zhangsan";
p.age = 10;
}
}
第27集 包和访问权限(三)
本集主要内容.
1.访问权限与继承.
2.protected 权限
package com.marsdroid;
//如果子类与父类不在同一个包当中,则子类无法继承到父类的当中的default权限的成员变量和成员函数.(有问题)
//如果子类和父类不在同一个包当中,子类可以继承到父类当中的default 权限的成员变量和成员函数,但是由于权限不够,无法使用.
//如果子类和父类在同一个包当中,则
//Student
//void introduce(){
// System.out.println("我的名字是" + name ",我的年龄是" + age);
// }
// 可执行
//定义public,可以跨包访问
//protected 权限首先拥有和default一样的功能,但是protected该权限只能修饰成员变量和成员函数.
//但是default可以修饰类.
//protected 子类可以跨包使用父类的成员变量和函数.
//public > protected > default >private
public class Person{
public String name; //可以跨包访问
protected int age;//只能被子类跨包访问
//例:在程序中,只能被Student这个子类访问age不能被Test 这个类访问age.因为它不是Person的子类,Person 与Test这两个类没什么关系
//如果变量声明为private,则变量只能在本类中使用.
void eat(){
System.out.println("eat");
}
void sleep(){
System.out.println("sleep");
}
}
/*********************************************************************************/
package org.marsdroid;
import com.marsdroid.Person;
class Student extends Person{
void introduce(){
System.out.println("我的名字是" + name +",我的年龄是" + age);
}
}
/*********************************************************************************/
package org.marsdroid;
import com.marsdroid.Person;
class Test{
public static void main(String args[]){
Person p = new Person();
p.name = "zhangsan";
p.age = 10;
}
}
权限: public > protected > default >private