zoukankan      html  css  js  c++  java
  • 匿名对象 构造方法 重载 构造代码块 this 关键字

    一.匿名对象

    1.匿名对象 :没有名字对象

    2.匿名对象的使用注意点:

         1.我们一般不会用匿名对象给属性赋值,无法获取属性值。

         2.匿名对象永远都不可能事一个对象。

    3.匿名对象的好处 : 书写简单。

    4.匿名对象的使用场景 :

         1.如果一个对象需要调用一个方法一次的时候,就可以用匿名对象来调用。

         2.可以作为实际参数在方法中调用。

    二.构造方法

    1.构造方法:在java中类似OC中的初始化方法

    2.OC初始化方法的特点 :

          1.可以在对象创建时初始化属性值。

          2.初始化方法只能被调用一次。

    3.构造方法的作用 :给对应的对象进行初始化,对象创建时初始化属性值。

    4.如何来创建构造方法:

       格式 :

          修饰符 类名(参数列表){}

    5.构造方法使用注意点:

          1.方法名和类名保持一致

          2.构造方法没有返回值的。

          3.构造方法不是由我们手动调用的,而是在对象被创建时由java虚拟机调用的。

          4.如果一个类我们没有给他定义构造方法,jvm在编译的时候会给这个类默认添加一个无参的构造方法。

          5.如果你自己定义构造方法,jvm就不会在创建无参的构造方法。这个时候需要自己定义一个无参的构造方法。

    6.构造方法中是可以调用普通方法的

          在同一个类中,方法的调用直接拿到方法名调用就可以了。

    7.构造方法中是可以调用普通(实例)方法。

    8.构造方法中是否可以调用构造方法?

    可以的

    9.构造方法中如何调用的?

    this(参数);

    10.使用注意点 :

          1.this调用构造方法,必须是构造方法中的第一个语句。

          2.不要相互调用构造方法。

    class Person
    {
    	//公有的属性
    	String name;
    	int    age;
    
    	//创建一个构造方法
    	public Person(String n,int a){
    		
    		//给属性赋值
    		name = n;
    		age = a;
    	}
    
    	public Person (){
    	
    	}
    
    	//行为 ,普通方法
    	public void work(){
    	
    		System.out.println(name +"正在工作");
    	}
    }
    
    class Demo1
    {
    	public static void main(String[] args) 
    	{
    		
    		//创建一个Person对象,同时给属性赋值
    		Person p = new Person("老王",38);
    		
    		//调用工作的方法
    		p.work();
    		//
    		Person p1 = new Person();
    		p1.name = "老宋";
    		p1.work();
    		
    	}
    }
    //老王正在工作
    //老宋正在工作
    

      

    二.重载

    1.重载:在java中方法是可以重名的,我们把这种重名的方法

    2.方法重载的使用注意事项:

          1.必须是方法名一样,才可以叫方法重载

          2.任何方法都可以实现方法的重载。

          3.保证参数列表的参数的顺序或者个数不一样

    class Baby
    {
    	
    	//公有的属性
    	String name;
    	String sex;
    	int age;
    	
    	{
    		//调用小孩哭的方法
    			cry();
    	}
    
    	//创键构造方法
    	Baby(String n,String s,int a){ // 局部变量 :必须初始化
    	
    			//给属性赋值
    			name = n;
    			sex = s;
    			age = a;
    
    		
    	}
    	
    	//参数的个数不一样。
    	Baby(String n,String s){
    		
    		name = n;
    		sex = s;
    
    		
    	}
    	
    	//和第一个对比参数的顺序不一样
    	Baby(String s,int a,String n){
    		name = n;
    		sex = s;
    		age = a;
    		
    	}
    
    
    	//不带参数的构造方法
    	Baby(){
    		
    		
    	}
    
    	
    
    	//公有的行为
    	public void cry(){
    		
    		System.out.println(name+"在哭1");
    	}
    
    	public void cry(String name){
    	
    		System.out.println(name+"在哭2");
    	}
    
    }
    
    class  Demo1
    {
    	public static void main(String[] args) 
    	{
    
    		//创建一个baby类
    		Baby b = new Baby("狗蛋","男",1);
    		//小孩饿了
    		b.cry();
    
    		//狗蛋又有一个小弟弟
    		Baby b1 = new Baby("二狗子","男");
    		//哇哇地哭
    		b1.cry();
    	}
    }
    //null在哭1
    //狗蛋在哭1
    //null在哭1
    //二狗子在哭1
    

      

    三.构造代码块 

    1.构造代码块的作用 : 给对象统一初始化。

    2.构造代码块的格式 :

           {

        }

    3.注意 :

          构造代码块必须是写在成员的位置上的

    4.代码块 :

          1.构造代码块

          2.局部代码块  写在方法中 也是以大括号来表示。

          3.静态代码块  后面讲。

    5.构造代码块的使用注意点 :

          1.java中编译器编译一个java源文件的时候,会把成员变量的声明放在类的最前面。

          2.成员变量的初始化都是在构造方法中执行的。

          3.一旦经过java编译器编译后,那么构造代码块中的代码会移到构造函数中执行

          4.成员变量的显示初始化和构造代码块,按照当前代码的顺序来执行的,谁在后面就显示谁。

    class Person
    {
    
    	//公有的属性
    	String name;
    	String sex;
    	int    age;
    
    	// 问题 : 构造代码块在什么时候被执行。
    
    	{
    		System.out.println("我是代码块");
    	}
    
    	//公有的方法
    	public void work(){
    	
    		System.out.println(name+"在工作");
    	}
    }
    
    class Demo1
    {
    	public static void main(String[] args) 
    	{
    		
    		Person p = new Person();
    
    		Person p1 = new Person();
    
    		Person p2 = new Person();
    	}
    }
    //我是代码块
    //我是代码块
    //我是代码块
    

      

    四.this 关键字

    1.this : 代表所属方法的调用对象。和OC 中的self很象。

     

    2.this关键字的作用 :

            1.如果成员变量和局部变量重名,在方法中时默认调用局部变量,通过this可以让方法调用成员变量。

    3.this关键字的使用注意点 :

            1.存在域成员变量同名局部变量,方法内部会访问局部变量(java采用一个就近原则)

            2.在方法中不存在和成员变量同名的局部变量,java编译器在编译时会默认给变量前面加一个this.

    class Person
    {		
    	//公共属性
    	String name;
    	
    	//构造代码块
    	
    
    	//创建一个构造方法
    	public Person (String name , int age){ //就近原则
    		
    		this.name = name; // 两个name都是指的时局部变量的name.
    		this.age =age;    // 两个age都是指的时局部变量的age
    		
    	}
    
    	int age = 20;
    
    	{
    		age = 18;
    	}
    
    	public void work(){
    
    		//创建一个局部变量 变量名也叫name
    		//String name = "老宋";
    	
    		System.out.println(name+"在工作");//null
    	}
    	
    
    
    
    }
    
    class Demo1
    {
    	public static void main(String[] args) 
    	{
    
    		Person p = new Person("老王",30);
    
    		p.work();
    
    		System.out.println(p.age); //打印老王的年龄 //老曹 :20  老肖:18 老陈:18 老王 :20 
    	
    	}
    }
    //老王在工作
    //30
    

      

  • 相关阅读:
    OpenGL ES multithreading and EAGLSharegroup
    NSRange用法(转)
    多测师肖老师_mysql之视图(10.1)
    多测师肖老师__三表(9.1)
    多测师肖老师__多表练习(8.1)
    多测师肖老师__多表讲解(7.9)
    多测师肖老师_mysql之单表练习(7.5)
    多测师肖老师__单表建表和练习(1.8)
    多测师肖老师_mysql之单表和多表题(9.2)
    多测师肖老师___分享杭州面试题
  • 原文地址:https://www.cnblogs.com/youjiajin/p/6207461.html
Copyright © 2011-2022 走看看