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()
}
}
}