java私有方法能被重载或者重写吗?

Python0196

java私有方法能被重载或者重写吗?,第1张

1.可以重载,不能重写

2.重载:就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义

比如:

public class Dog {

private void bark(){//bark()方法是重载方法

}

private void bark(int a){//bark()方法是重载方法

}

}

3.重写:类与子类之间的多态性,对父类的函数进行重新定义。在子类中定义某方法与其父类有相同的名称和参数。

4.因为私有方法不能被子类访问, 所以不能重写。

将一个类的构造函数私有化,可以使得该类不被实例化,和不能被继承。要创建这个类的实例,唯一的办法是提供一个公共静态方法。这种方式被称为单例模式。

私有化代码示例如下:

package test

class Some{

    private Some(){}

    public static void dosome(){

        System.out.println("dnali")

    }

}

public class Singeleton {

    public static void main(String[] args) {

        //Some s=new Soem()无法实例化Some的对象

        Some.dosome()

    }

}

扩展资料:

java 构造函数的执行过程

类初始化时构造函数调用顺序:

(1)、初始化对象的存储空间为零或null值;

(2)、调用父类构造函数;

(3)、按顺序分别调用类成员变量和实例成员变量的初始化表达式;

参考资料:百度百科-java 构造函数

利用java的反射机制,以下代码:

public class Main {

private void fun(){

System.out.println("this is my private method!")

}

private void fun2(String what) {

System.out.println(what)

}

private static void fun3(){

System.out.println("this is my private static method!")

}

} import java.lang.reflect.InvocationTargetException

import java.lang.reflect.Method

public class Test {

public static void main(String[] args) {

try {

Class<?> _class = Class.forName("Main")//名字填完整的包名.类名  ,示例没有包因此只填类名

Object object = _class.newInstance()

Method method = _class.getDeclaredMethod("fun")//fun无参数,因此只要方法名

method.setAccessible(true)//私有方法设置可访问 

method.invoke(object, new Object[0])

Method method2 = _class.getDeclaredMethod("fun2",String.class)//有参数,需要参数的类别

method2.setAccessible(true)

method2.invoke(object, new String("test"))//传参数的值

Method method3 = _class.getDeclaredMethod("fun3")

method3.setAccessible(true)

method3.invoke(object,new Object[0])//静态方法,object传null

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

 catch (InstantiationException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (SecurityException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (NoSuchMethodException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace()

} catch (InvocationTargetException e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

}