
构造方法
这个是创建对象时候用的 里面可以给赋予初始值或者继承父类的属性或者方法 反正就是构造对象时候用的方法拉
成员方法
这个我还真不懂
实例方法
就是对象方法 只能被对象所调用
静态方法
就是类方法
被static修饰的方法就是类方法 类和对象皆可调用 但一般很少用到静态方法 一般都是为了方便调试或者是有些特殊的地方要用上
方法并不是谁包含谁 他只是一种运算方式
还有final方法 不可被任何类继承重载
抽象方法是在抽象类和接口声明的
他们需要实现或者继承,可覆盖
楼上的都说了 不清楚我怎么说你能明白么
以上的都是常见的方法类型
有时间看看修饰符的作用和类与对象的关系
就没看见过你怎么问的
补充回答:
没层次
方法主要就分对象方法和类方法(静态)
还有抽象方法和final方法
主方法程序的开始
方法之间没层次关系,他们只是被对象或类调用
不能够。根据Python编程的使用方法得知,静态方法可以没有参数,是可以直接使用类名调用的,静态方法名义上归类管理,实际中在静态方法中无法访问类和实例中的任何属性和方法的,是不能够调用实例方法和实例属性的。Python是一门流行的编程语言。它由GuidovanRossum创建,于1991年发布。
现在有如下一个Person类:
类中定义了基本属性name 和age
```
function Person( name, age){
thisname = name||"lorentz";
thisage = age||27;
}
```
首先我们给它添加一个实例方法,即通过实例化该类,在类的实例上可以调用的方法
```
function Person( name, age){
thisname = name||"lorentz";
thisage = age||27;
}
//定义在原型上的方法 可以在实例上直接调用
PersonprototypesayAge = function(){
consolelog(`my age is ${thisage}`);
}
let p1 = new Person();
p1sayAge(); //my age is 27
```
通过构造函数的原型,定义了一个sayAg方法,所有的实例都可以通过原型链调用该方法。
静态方法即不需要实例化,可以直接利用构造函数调用的方法。在JS中,函数也是一个对象。将构造函数对象的某个属性设置为一个函数即为静态方法:
注意静态方法里this指向构造函数对象Person,而不是构造函数的实例
```
function Person( name, age){
thisname = name||"lorentz";
thisage = age||27;
}
//定义在原型上的方法 可以在实例上直接调用
PersonprototypesayAge = function(){
consolelog(`my age is ${thisage}`);
}
PersonstaticMethod = function(){
consolelog(`i am a static method `); //i am a static method
//静态方法中的this指向Person这个构造函数对象,在该对象里是没有age这个属性的
consolelog(`my age is ${thisage}`); // my age is undefined
consolelog(this); //[Function: Person] { staticMethod: [Function (anonymous)] }
}
PersonstaticMethod();
```
在构造函数里定义私有方法,该方法无法在外部直接访问,通过闭包可以访问该方法
注意此时Person是一个普通函数,返回了一个对象,通过返回的对象可以访问他的私有方法
```
function Person( name, age){
thisname = name||"lorentz";
thisage = age||27;
let privateMethod = function(){
consolelog(`i am a priviate method`);
}
return {
fn: privateMethod
}
}
let p = Person();
pfn(); //i am a priviate method
```
1、静态方法中不能调用非静态方法。
2、如果静态方法中必须要调用非静态方法,可以先new(实例),之后通过new实例的引用调用此类的方法。
3、如果一个类被实例化了,那么这个类中除了private的,都可以调用到。
1添加spring获取上下文和bean方法的工具类(ApplicationContextUtil)
@Component
public class ApplicationContextUtil implements ApplicationContext{
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext context){
ApplicationContextUtilcontext = context;
}
public static ApplicationContext getContext(){
return context;
}
}
2在静态方法类中通过工具类获取bean内容(获取的为bean内容,也可以实例化对象,但是获取不到bean内容)
Object obj = (Objectclass)ApplicationContextUtilgetContext()getBean("bean的名字");
1、静态方法(static)的含义是,属于“类”的方法。什么意思呢?比如我们说“人”,有两种概念,一种是“人类”,指的是抽象的整体概念,一种是“个人”,比如张三,李四。static是用来服务“类”的,而实例变量是用来服务“个体”的。
2、举个例子,比如说人类的历史,那么“历史”就应该是static的,而个人的经历,“经历”就是属于具体的个人的,就不是static。
3、所以,静态方法当然不能调用实例变量,因为在“整体”中你压根不可能知道你要调用哪个“个体”的实例变量。
静态方法是用来 *** 作这个类型的,方法被该类的所有实例共享。
而实例方法用来 *** 作单个实例,不被该类所有实例共享。
静态方法中不能调用实例方法,也不能访问实例变量。
实例方法可以调用静态方法,也能访问静态变量。
总之静态方法对应的是类型,即Class,类。但是实例方法对应的是实例,即object,对象。
实例方法的区别主要体现在两个方面:
在外部调用静态方法时,可以使用"类名方法名"的方式,也可以使用"对象名方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
下面几个例子展示了这一区别。
1、调用静态方法示例。
//-----------hasStaticMethodjava-----------------
public class hasStaticMethod{
//定义一个静态方法
public static void callMe(){
Systemoutprintln("This is a static method");
}
}
下面这个程序使用两种形式来调用静态方法。
//-----------invokeStaticMethodjava-----------------
public class invokeStaticMethod{
public static void main(String args[]){
hasStaticMethodcallMe(); //不创建对象,直接调用静态方法
hasStaticMethod oa = new hasStaticMethod(); //创建一个对象
oacallMe(); //利用对象来调用静态方法
}
} 程序两次调用静态方法,都是允许的,程序的输出如下:
This is a static methodThis is a static method
允许不创建对象而调用静态方法,是Java为了减少程序员调用某些常用方法时的麻烦,而允许程序员按照传统的C语言中使用函数的方式来使用方法。典型的例子是前面某些程序中使用"Mathramdon()"来获取随机数。
还有一个很典型的代表就是数组的处理工具Arrays
2、静态方法访问成员变量示例。
//-----------accessMemberjava-----------------
class accessMember{
private static int sa; //定义一个静态成员变量
private int ia; //定义一个实例成员变量
//下面定义一个静态方法
static void statMethod(){
int i = 0; //正确,可以有自己的局部变量sa = 10;
//正确,静态方法可以使用静态变量
otherStat();
//正确,可以调用静态方法
ia = 20; //错误,不能使用实例变量
insMethod(); //错误,不能调用实例方法
}
static void otherStat(){}
//下面定义一个实例方法
void insMethod(){
int i = 0; //正确,可以有自己的局部变量
sa = 15; //正确,可以使用静态变量
ia = 30; //正确,可以使用实例变量
statMethod(); //正确,可以调用静态方法
}
}
本例其实可以概括成一句话:静态方法只能访问静态成员,实例方法可以访问静态和实例成员。之所以不允许静态方法访问实例成员变量,是因为实例成员变量是属于某个对象的,而静态方法在执行时,并不一定存在对象。同样,因为实例方法可以访问实例成员变量,如果允许静态方法调用实例方法,将间接地允许它使用实例成员变量,所以它也不能调用实例方法。基于同样的道理,静态方法中也不能使用关键字this。
main()方法是一个典型的静态方法,它同样遵循一般静态方法的规则,所以它可以由系统在创建对象之前就调用
以上就是关于java中有关静态方法中不能调用实例方法的问题全部的内容,包括:java中有关静态方法中不能调用实例方法的问题、python静态方法能够调用实例方法和实例属性吗、JS中类的实例方法,静态方法以及私有方法分析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)