public class Demo_Static {
public static void main(String[] args) {
//静态成员可以通过类名调用
Student.nationality = "中国";
Student student1 = new Student("张三",23);
Student student2 = new Student("李四",24);
//静态成员被所在的类的成员共享
System.out.println("student1的国籍:"+student1.getNationality());
System.out.println("student2的国籍:"+student2.getNationality());
}
}
student1的国籍:中国
student2的国籍:中国
public class Demo_Static2 {
/*
1.静态方法只能调用静态成员(静态成员变量, 静态成员方法)
2.非静态方法可以调用任意成员(静态和非静态都可以)
*/
static String a;
String b;
public static void staticMethod1() {
System.out.println(a);
System.out.println(b);//报错!
staticMethod2();
method2();//报错!
}
public static void staticMethod2() {
}
public void method1() {
//都没有报错
System.out.println(a);
System.out.println(b);
staticMethod2();
method2();
}
public void method2() {
}
}
public class Demo_Static3 {
}
class Father {
private void privatemethod(){
System.out.println("我是私有方法");
}
public static void staticmethod(){
System.out.println("我是静态方法");
}
}
class Son extends Father{
/*
@Override//报错,
private void privatemethod(){
}
@Override//报错
public static void staticmethod(){
}
*/
}
public class Demo_Static4 {
private static String name ="name";
private String num = "num";
//静态内部类
static class Person1 {
// 静态内部类中可以定义非静态和静态的成员变量
private String address = "China";
private static String mail = "dakele.itcast.cn";
//非静态方法
public void method() {
//可以访问内部的静态和非静态成员
System.out.println(address + "---" + mail);//访问本内部类成员。
//静态内部类只能访问外部类的静态成员
System.out.println(name);
System.out.println(num);//报错
}
//静态方法
public static void method1() {}
}
//非静态内部类
class Person2 {
//非静态内部类: 只能定义非静态的成员
private String address = "China";
public static String mail ="mail.126.com";//报错
//非静态方法
public void method2(){
//非静态内部类只能访问内部类的非静态成员
System.out.println(address);
//非静态内部类可以访问外部的静态和非静态成员(和方法)
System.out.println(name);
System.out.println(num);
}
//非静态内部类中不能有静态方法-报错
public static void method3() {
}
}
}
public class Demo_Static5 {
static {
System.out.println("静态代码块执行");
}
public Demo_Static5(){
System.out.println("构造方法执行");
}
public static void main(String[] args) {
Demo_Static5 ds1 = new Demo_Static5();
Demo_Static5 ds2 = new Demo_Static5();
System.out.println("main方法执行");
}
}
public class Demo_Static6 {
//私有构造
private Demo_Static6(){}
private static Demo_Static6 single = new Demo_Static6();
//静态工厂方法
public static Demo_Static6 getInstance(){
return single;
}
}
本文由 Alicyu 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://www.alicyu.com/archives/static
最后更新:2019-10-18 14:52:01
Update your browser to view this website correctly. Update my browser now