zoukankan      html  css  js  c++  java
  • 构造方法和方法重载小结

    构造方法和方法重载
     
     作用:创建类的时候同时初始化数据,在创建new的时候.
     声明构造方法:
     public 类名;
     比如 public BOOK(){};

    对象变量进行初始化的 创建new的时候自动调用. 
    自己写的有参数的构造函数 可以把值传给变量

    构造方法简单上说是为了可以根据类属性需要更方便的创建对象
    举个例子

    比如咖啡这个类
    咖啡的类型、成分就可以看成一种属性,咖啡的种类可以是拿铁,摩卡,咖啡材料可以有淡奶,糖,巧克力……
    根据需要想放材料什么就放什么.把材料作为参数传进去,就可以泡出咖啡(初始化咖啡这个对象)
    也就是说只用传入参数,就可以初始化出一个对象

    public coffce{
    int sugar; //糖
    int milk; //
    int chocolate; //巧克力的数量
    }
    public coffce(int sugar,int milk){
    //只要糖和牛奶的咖啡.
    }
    
    public coffce(String milk){
    
    ////只要牛奶的咖啡.
    }
    
    coffce p1=new coffce(1,1);//初始化出一杯1分量糖1分量牛奶的咖啡.
    coffce p1=new coffce(1);//初始化出一杯1分量牛奶的咖啡.

     
    方法重载:
     与类的方法名一致,但是参数不一致,通过传入不同的参数实现不同的效果.
     参数不一致可以是参数数据类型、参数个数不一致,
     
     比如是,咖啡泡好了,要堂食还是打包带走?表示接下来的对这杯咖啡的操作.
     比如整数1表示带走,不传入参数表示堂食;

     public void drink()
     {
        System.out.println("堂食");
     }
     
     public void foo(int n)
     {
     System.out.println("打包"); //方法重载
     }
     

     

     


    构造方法与方法的区别
    1.功能和作用上:
    构造方法就是实例化一个对象。
    方法是这个实例化出来的对象进行操作.


    2.修饰符上:
    构造方法可以有任何访问的修饰: public, protected, private或者没有修饰
    不同于方法的是,构造方法不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized。

    3.返回类型上:
    方法能返回任何类型的值或者无返回值(void)
    构造方法是没有返回值的,不需要void。 

    4.命名上
    构造器使用和类相同的名字,而方法则不同。
    一般方法是用动词来命名,表示他是一个行为;
    构造器就一般会用名词来命名,说明是为了创建一类,一个个体。


    关于方法的继承性
    首先,类和类之间才能叫继承,方法只有覆写或者重载.
    如果子类定义了构造方法,不论是无参数还是带参数,类在初始化的时候会先调用父类的构造方法,如果子类没有定义构造方法,就会调用父类的无参数的构造方法,
    子类可以使用super()显示调用父类带参数的构造函数,注意,super()语句必须是子类构造方法中第一条有效代码.


    注意:构造方法调用类中的其他的构造方法,则可以用this(参数),切该语句放在构造方法的第一条.

    public class Student {
    
        private String name;
        private int age;
        private int classname;
        
        
        public Student()
        {
            
            
        }
        
        
        public Student(String name,int age,int classname)
        {
            
    
            this.age=age;//重复的代码直接调用setage,
            this.name=name;
            this.classname=classname;
        
        }
    ///父类
    
    ////创建一个primarystu类继承Student类;
    
        class primarystu extends Student{
            
            
            
            public primarystu(){
                super(name,age,classname); //调用父类的构造方法
                
            }
    
            
        }

     


      
    说白了就是方法的继承原则就是,先调用父亲的.(没有就默认调用,有了就按有的调用,反正只要有一个就可以了.)

     

    构造方法和方法重载示例:

     

    class student{
        int age;
        String name;
        int weight;
        
    public student(){
        
    
        System.out.println("没有参数构造函数");
    }
    public student(String name,int age){
    
        this.age=age; //当前运行的实例对象.
        this.name=name;
        System.out.println("参数x1构造函数");
        
    }
    
    public student(String name,int age,int weight){
    
        this.age=age;
    
        this.weight=weight;
        this.name=name;
        System.out.println("参数x2构造函数");
        
    }
    public void study(){
        System.out.println("没有参数构造方法");
        
    }
    public void study(int time){
        System.out.println("参数time构造方法");
    }
    
    public void study(int time,String object){
        System.out.println("参数time构造方法");
        
    }
    
    
    
    public student(String name,int weight)
    {
        
    }
    
    public class forStudentarr {
        
        public static void main(String[] args){
            
            
            student stu1=new student();
    
    //这个student,限定了这个数组,只能放student这个类的东西
              //跟int i1=new i()一样,只能放一个类型的数据.
    
            student stu2=new student("Mings",17);
    
            student stu3=new student("SHIR",19,36);
    
      
            student []numarry=new student[3];
            numarry[0]=stu1;
            numarry[1]=stu2;
            numarry[2]=stu3;
            
            
            for(student i:numarry)
            {
                System.out.println(i.name); //输出数组的信息
                System.out.println(i.age); //输出数组的信息
                
            }
            
            
        }
    
    }

     

     

    __________________________________________________________

    运行结果:
    没有参数构造函数
    参数x1构造函数
    参数x2构造函数
    null
    0
    Mings
    17
    SHIR
    19

     

     

  • 相关阅读:
    Python 3学习 ——目录 Json Pickle
    Python 3 学习——函数扩展and迭代器生成器装饰器
    Python 3 学习——深浅拷贝以及函数
    Python 3 学习的第七小节——Linux-Ubuntu
    Python 3 —— 文件操作
    Python 3 学习的第五小节——字符编码与三级菜单实践
    关于PHP代码复用‘traits’的一段代码
    一个将对象彻底冻结的函数
    详解vue-cli脚手架项目-package.json
    关于element-ui日期选择器disabledDate使用心得
  • 原文地址:https://www.cnblogs.com/Ansonrelovisa/p/5950374.html
Copyright © 2011-2022 走看看