• java新手笔记11 类的静态属性、方法(单例)


    1、Person类

    package com.yfs.javase;
    
    public class Person {
    	
    	String name;//每个对象上分配 与对象绑定
    	int age;
    	char sex;
    	boolean married;
    	
    	static String country = "中国";//静态属性  与类绑定 所有对象共享
    	
    	public static void baseInfo () {//静态方法  与类绑定 所有对象共享
    		System.out.println("舌尖上的中国...");
    		//method() ;//静态方法不能调用非静态方法
    		//String n = name;//静态方法不能访问非静态属性
    		String n = country;
    	}
    	
    	public void test () {//非静态方法
    		System.out.println("call test() ....");
    		name = "Tom";//访问非静态属性
    		String  s = country;//访问静态属性
    		System.out.println("s = " + s);
    		//调用静态方法
    		baseInfo();
    	}
    	
    	public void method () {
    		System.out.println("method() ....");
    	}
    
    }
    

     2.Person测试1

    package com.yfs.javase;
    
    public class PersonTest {
    
    	public static void main(String[] args) {
    		Person p1 = null;
    		p1 = new Person();
    		p1.name = "张三";
    		
    		Person p2 = new Person();
    		p2.name = "李四";
    		System.out.println("p1.name  " + p1.name);
    		System.out.println("p2.name  " + p2.name);
    		System.out.println("=========================");
    		p1.name = "王五";
    		
    		System.out.println("p1.name  " + p1.name);
    		System.out.println("p2.name  " + p2.name);
    		
    		//静态属性通过类名访问
    		System.out.println("Person.country  " + Person.country);
    		
            p1.country = "日本";
            System.out.println("Person.country  " + Person.country);
            System.out.println("p2.country  " + p2.country);
            
            
    //        Person.baseInfo();//静态属性 方法通过类访问
    //        p1.baseInfo();
    //        p2.baseInfo();
              p1.test();
    	}
    
    }
    

     3.测试Person2

    package com.yfs.javase;
    
    public class PersonTest1 {
    
    	public static void main(String[] args) {
    		Person p1 = null;//类加载
    		System.out.println(Person.country);
    		Person.baseInfo();
    		//p1.name = "张三";
    		
    	}
    
    }
    

     4.Person 类2(代码块、静态代码块)

    package com.yfs.javase;
    
    public class Person {
    
    	String name;// 每个对象上分配 与对象绑定
    	int age;
    	char sex;
    	boolean married;
    	// 代码块 执行时机 创建对象时执行
    	{
    		System.out.println("这是代码块的内容");
    	}
    	// 静态代码块  与类绑定 只执行一次
    	static {
              System.out.println("这是静态代码块内容....");
    	}
    
    	public Person() {
    		System.out.println("创建Person对象");
    	}
    
    	public Person(String name) {
    		System.out.println("Person(name) ....");
    		this.name = name;
    	}
    
    	public Person(String name, int age, char sex, boolean married) {
    		// this(name);//构造方法调用
    		this.name = name;
    		this.age = age;
    		this.sex = sex;
    		this.married = married;
    		System.out.println("四个参数的构造方法...");
    	}
    
    	static String country = "中国";// 静态属性 与类绑定 所有对象共享
    
    	public static void baseInfo() {// 静态方法 与类绑定 所有对象共享
    		System.out.println("舌尖上的中国...");
    		String n = country;
    	}
    
    	public void test() {// 非静态方法
    		System.out.println("call test() ....");
    		name = "Tom";// 访问非静态属性
    		String s = country;// 访问静态属性
    		System.out.println("s = " + s);
    		// 调用静态方法
    		baseInfo();
    	}
    
    	public void method() {
    		System.out.println("method() ....");
    	}
    
    }
    

     5.Person类 2  测试

    package com.yfs.javase;
    
    public class PersonTest {
    
    	public static void main(String[] args) {
    		Person p1 = new Person("张三",20,'男',false);
    		
    		Person p2 = new Person();
    		
    		Person p3 = new Person("李四");
    	}
    
    }
    

     6.Person类3 (private 属性、方法、get/set方法)

    package com.yfs.javase;
    
    public class Person {
    	// 属性私有private
    	private String name = "Jack";// 每个对象上分配 与对象绑定
    	private int age;
    	private char sex;
    	private boolean married;
    	static String country = "中国";// 静态属性 与类绑定 所有对象共享
    	//查看对象的属性值
    	public String toString() {
    		return "name = " + name + ", age = " + age + ", sex = " + sex + ", married = " + married;
    	}
      
    	{
    		name = "Tom";
    	}
    	// 设置方法 参数
    	// public void setAge(int age) {
    	// if (age > 150) {
    	// System.out.println("年龄不合法");
    	// return;
    	// }
    	// this.age = age;
    	// }
    	//
    	// // 获取的方法
    	// public int getAge() {
    	// return age;
    	// }
    	// 通过get set方法 设置 获取属性的值
    	public Person() {
    		System.out.println("创建Person对象");
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    
    	public char getSex() {
    		return sex;
    	}
    
    	public void setSex(char sex) {
    		this.sex = sex;
    	}
    
    	public boolean isMarried() {
    		return married;
    	}
    
    	public void setMarried(boolean married) {
    		this.married = married;
    	}
    
    	public Person(String name) {
    		this.name = name;
    	}
    
    	public Person(String name, int age, char sex, boolean married) {
    		this.name = name;
    		this.age = age;
    		this.sex = sex;
    		this.married = married;
    	}
    
    	public static void baseInfo() {// 静态方法 与类绑定 所有对象共享
    		System.out.println("舌尖上的中国...");
    		//method();静态方法不能访问
    	}
    
    	public void test() {// 非静态方法
    		System.out.println("call test() ....");
    		method();//在同一类中私有属性 方法可以调用
    	}
    
    	private void method() {//私有方法   范围在类的内部访问
    		System.out.println("method() ....");
    		//test();
    		baseInfo();
    		String n = name;
    	}
    
    }
    

     7.Person类3测试

    package com.yfs.javase;
    
    public class PersonTest {
    
    	public static void main(String[] args) {
    		Person p1 = new Person("张三",20,'男',false);
    		System.out.println(p1.toString());
    		
    //		System.out.println("p1.name = " + p1.name);
    //		System.out.println("p1.age = " + p1.age);
    //		System.out.println("p1.sex = " + p1.sex);
    //		System.out.println("p1.married = " + p1.married);
    		
    		//p1.name = "张飞";
    		//修改年龄  通过方法
    		//p1.age = 2000;
    		p1.setAge(2000);
    		p1.setAge(28);
    		p1.setName("张XX");
    		
    		System.out.println("p1.getName() = " + p1.getName());
    		System.out.println("p1.getAge() = " + p1.getAge());
    		System.out.println("p1状态:  " + p1.toString());
    		
    		p1 = new Person("张三",21,'男',false);
    		//p1.method();//私有方法不能访问
    		
    	}
    
    }
    

     8.单例对象 模型

    package com.yfs.javase;
    
    public class Singleton {
    	
    	private Singleton () {
    		
    	}
    	//通过一个对象 声明static 
    	public static Singleton getInstance() {
    		Singleton s = new Singleton();
    		return s;
    	}
    
    	public void eat() {
    		System.out.println("eat().....");
    	}
    }
    

     9.单例对象测试

    package com.yfs.javase;
    
    public class Test {
    
    	public static void main(String[] args) {
    		//Singleton sing = new Singleton();
    		Singleton sing = Singleton.getInstance();
    		sing.eat();
    	}
    
    }
    
  • 相关阅读:
    IE6IE9兼容性问题列表及解决办法总结
    正则表达式笔记:提取C#代码中的中文信息,双引号,尖括号间的信息
    IE6IE9兼容性问题列表及解决办法_补遗漏之一:button的type默认值改变为submit了。
    IE6IE9兼容性问题列表及解决办法_补充之三:Table的Col不再支持style及align,需要到th, td中去设置
    再谈IE的浏览器模式和文档模式
    WebRequest, WebResponse , HttpWebResponse, HttpWebResponse , WebClient笔记
    IE6IE9兼容性问题列表及解决办法_补遗漏之二:CSS区分大小写,Style中height需要加px
    VS2010的智能提示没有了的可能原因
    IE6IE9兼容性问题列表及解决办法_补充之四:HTC (Html Components) 功能逐渐被IE抛弃
    LINQ to XML 笔记,确实比DOM好用,方便。
  • 原文地址:https://www.cnblogs.com/feilongblog/p/4675311.html
Copyright © 2020-2023  润新知