zoukankan      html  css  js  c++  java
  • 面向对象-类的构造方法(函数)

             面向对象-类的构造方法(函数)

                                 作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

     

     

     

    一.构造方法概述

      构造方法特点:
        (1)函数名与类名相同
        (2)不用定义返回值类型
        (3)不需要写return语句(没有具体的返回值)
        (4)在对象建立的时候被直接调用
        (5)
    多个构造函数是以重载的形式存在的
      构造方法作用:
        构造函数在对象建立的时候会被直接调用,它一般用作给对象做初始化操作(类似于我们生活中所说的出厂配置)。
    
      类构造方法和普通方法的区别:
        普通方法时用于定义对象应该具备的功能,而构造方法定义的是对象在建立时需要具备的一些内容,也就是对象的初始化内容。
        普通方法在对象建立后需要显式调用才会执行,而构造方法是在对象建立时被调用,为了给对象进行初始化。

    二.this关键字概述

    this的特点:
    this代表其所在函数所属对象的引用,换句话说,this代表类对象的引用。
    
    this的应用常见:
    针对局部变量和成员变量同名的时候。
    
    this关键字在构造函数间的引用:

    三.实战案例

    /**
     * 
     * @author 尹正杰
     *
     */
    public class Person {
        
        private String name;
        private int age;
        
        /*
         * 构造函数细节:
         *     (1)构造函数在对象建立的时候会被直接调用,它一般用作给对象做初始化操作(类似于我们生活中所说的出厂配置);
         *     (2)当类中没有定义构造函数时,JVM会自动给该类加上一个空参数的构造函数,这个是类中默认的构造函数;
         *     (3)在一个类中可以以重载的方式定义多个构造函数,因为重载时构造函数的名称都相同。
         * 
         */
        Person(){
            System.out.println("Person1 正在初始化...");
        }
        
        Person(int age){
            this.age = age;
            System.out.println("Person2 正在初始化...");
        }
        
        /*
         * this关键字在构造函数间调用时只能定义在构造函数的第一行
         */
        Person(String name){
            this(17);
            this.name = name;
            System.out.println("Person3 正在初始化...");
        }
        
        Person(String name,int age){
            this.name = name;
            if(age > 0 && age <= 150) {
                this.age = age;
                System.out.println("Person4 正在初始化...");
            }else {
                System.out.println("年龄非法!");
            }
            
        }
    
        
        public void sayHello() {
            System.out.println("My name is [" + this.getName() + "],and I'm " + this.getAge() + " years old.");
        }
        
        //为私有变量定义getter和setter方法
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(short age) {
            if(age > 0 && age <= 150) {
                this.age = age;
            }else {
                System.out.println("年龄非法!");
            }
            
        }
    
    }
    定义Person类(Person.java)
    /**
     * 
     * @author 尹正杰
     *
     */
    public class PersonDemo {
    
        public static void main(String[] args) {
            String name1 = "Jason Yin";
            String name2 = "尹正杰";
            String name3 = "Jason Yin 最强王者";
            String name4 = "BigData";
            
            short age1 = 28, age2 = 18, age3 = 26,age4 = 16;
            
            Person p1 = new Person();
            p1.setName(name1);
            p1.setAge(age1);
            
            Person p2 = new Person(age2);
            p2.setName(name2);
            p2.setAge(age2);
            
            Person p3 = new Person(name3);
            
            Person p4 = new Person(name4,age4);
            
            p1.sayHello();
            p2.sayHello();
            p3.sayHello();
            p4.sayHello();
            
            
        }
    }

  • 相关阅读:
    Object-c学习之路四(oc内存管理autorelease)
    Object-c学习之路三(@class与#import的区别)
    Object-c学习之路二(oc内存管理黄金法则1)
    Object-c学习之路(oc点语法)
    python(学习之路一)
    css中的position属性
    盒子模型——边框(Border)
    CSS盒子模型
    form(表单)标签常用标签及属性
    Codeforces Round #271 (Div. 2) D Flowers【计数dp】
  • 原文地址:https://www.cnblogs.com/yinzhengjie2020/p/12231463.html
Copyright © 2011-2022 走看看