我想知道如何使用其他包中的类
这是包project1内的文件
package project1;
class student{
void print(){
System.out.println("s");
}
}
class teacher{
void print(){
System.out.println("t");
}
}
public class Project1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}
}
这是包project2内的文件
package project2;
import project1.student;
public class Project2 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
student x = new student();
}
}
但是我收到的错误是学生没有公开,
我是否以错误的方式导入学生课程,以至于我无法使用学生课程,或者无法做到这一点?
答案 0 :(得分:3)
如果某个类没有修饰符(public
,private
...),则它使用默认修饰符,这意味着只能从同一个包中访问该类。
在这个this table中,您将很容易看到:
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier Y Y N N // this is your class
private Y N N N
所以您需要在单独的文件中将Student
类声明为公开,或将Project2
放在与Student
和Teacher
相同的包中}
public class student{
void print(){
System.out.println("s");
}
}
答案 1 :(得分:1)
问题是您的班级学生有默认修饰符,它将访问级别限制在同一个包中(无法在包project1
外部访问以打包project2
)。一个public class
中只能有一个java file
。
试试这个:
student.java
project1
public class student
文件答案 2 :(得分:1)
首先,你不能有两种主要方法。
尝试使类静态,以便您可以使用Class.etc;
访问它们或者您可以尝试创建每个类的新对象(我认为这样更好)。 删除第二个主要方法,只留一个。 并将其作为第一个:
var base_url="http://localhost/ums/";
define(['angularAMD', 'ngRoute','flash','angular-loading-bar','ngAnimate','uniqueField','input_match','angular-chart'], function (angularAMD) {
var app = angular.module('angularapp', ['ngRoute','flash','angular-loading-bar','ngAnimate','uniqueField','input_match','angular-chart']);
app.config(['$routeProvider', function($routeProvider){
$routeProvider
.when('/dashboard', angularAMD.route({
title : 'Dashboard',
controller : 'dashboardCtrl',
templateUrl : base_url+'angular/partials/admin/dashboard.php',
controllerUrl: base_url+'angular/js/admin/controllers/dashboardCtrl.js'
}))
//.......................all routing ............//
.otherwise({
redirectTo : '/dashboard'
});
}]);
app.run(['$rootScope', '$route', function($rootScope, $route) {
$rootScope.$on('$routeChangeSuccess', function() {
document.title = $route.current.title;
});
}]);
// Bootstrap Angular when DOM is ready
return angularAMD.bootstrap(app);
});
现在,您可以使用student1.Something使用此对象访问学生班级。 除了包含main方法的类之外,对所有类执行相同的操作。 }
还要以大写字母开头。
答案 3 :(得分:0)
您应该将您的Student
课程声明为公开课程,如下所示:
public class student{
void print(){
System.out.println("s");
}
}
反正 根据OOP开发方法,在同一文件上有多个类(不是内部类)是一种不好的做法。它对于维护,调试,可重用组件和模块化也是不利的。
我建议您也将类声明拆分为单独的文件(即使类很小而且简单)
答案 4 :(得分:0)
您在访问修饰符时遇到问题。
您的class student
现在是package private
(无修饰符)。让它public
在包外面使用
public class student{
}
阅读accesscontrol了解详情。