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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值