JAVA:

今天总结一下构造方法、关键字、方法重载和方法重写的异同
 
一、构造方法(构造函数)
1、构造方法的作用:
一是创建对象时调用构造方法创建对象,二是可以初始化多个属性
【学生类创建一个学生对象stu:Student stu = new Student()  这里调用的是无参构造函数。】
2、构造函数的结构及注意事项:
1、结构:【public 类名([参数类型1 参数名1,参数类型2 参数名2..... ])】
2、参数可无
3、一般在创建一个类的时候,如果创建的类没有构造函数程序会自动创建一个默认的无参构造函数,当你在类中已经写有构造函数,那么默认无参构造函数将会被覆盖,也就是不存在。
 
二、关键字this:
this主要有三个作用:
1、在本类中作为对象调用属性,在属性名与参数名相同时,需要用this来调用属性给属性赋值,否则无法赋值。
2、调用构造函数
3、可以返回本类对象(目前用途我还不是很清楚...)
 
例子:创建一个学生类
  1. package object1;
  2.  
  3. public class Student {
  4. //属性 (四种访问权限的属性)
  5. public String name;
  6. protected String sno;
  7. int score;
  8. private int age;
  9.  
  10. //注意点:1不能写返回类型 2 方法名为类名。 结构为 public 类名([参数]){};
  11. public Student(String name,String sno) {
  12. //初始化属性
  13. this.name = name;
  14. this.sno = sno;
  15. }
  16. /*
  17. * 方法重载(构造方法也可以重载) 1方法名相同 2返回类型、参数类型/个数不能全部相同
  18. */
  19. public Student(){
  20. //调用另一个构造函数(方法)
  21. this("缺省","20190123");
  22. /* 初始化属性
  23. name = "B"; */
  24. }
  25. public void Study()
  26. {
  27. System.out.println(name + "正在学习...");
  28. }
  29. protected void Study(String sno,String name)
  30. {
  31.  
  32. System.out.println(name + "的学号时是:"+sno);
  33. }
  34. public Student object() {
  35. return this;
  36. }
  37. }

主类

  1. package object1;
  2.  
  3. public class Main {
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. Student stu1 = new Student("abc","123");
  8. Student stu3;
  9. System.out.println("用无参构造函数生成对象stu1: \n");
  10. stu1.Study();
  11. stu1.Study("201901", "abc");
  12.  
  13. System.out.println();
  14. Student stu2 = new Student("ABC","20190123");
  15. System.out.println("用有参构造函数生成对象stu2: \n");
  16. stu2.Study();
  17. stu2.Study("201923", "A");
  18.  
  19. /* //对属性的使用
  20. stu1.name = "B";
  21. stu1.sno = "90120123";
  22. stu1.score = 100;
  23. //报错,因为age是私有属性,不能被其他类直接调用
  24. stu1.age = 18; */
  25. stu3 = stu1.object();
  26. stu3.Study();
  27. stu3.name = "bvjkbsd";
  28. System.out.println(stu3.name);
  29. }
  30.  
  31. }

运行结果

  1. 用无参构造函数生成对象stu1:
  2. abc正在学习...
  3. abc的学号时是:201901
  4.  
  5. 用有参构造函数生成对象stu2:
  6. ABC正在学习...
  7. A的学号时是:201923
  8.  
  9. stu3:
  10. abc正在学习...
  11. bvjkbsd

  

 
三、方法重载和方法重写
两个都是原方法已经无法满足需求了而重写或者重载,但两者依旧是有区别的。两者最明显的区别就是方法重载是在同一个类中写的,方法重写是在子类中对父类的方法进行重写,也就
是不同类中,其次方法重载是要求方法名相同,返回类型、参数类型、参数个数至少要有一个不一样,而方法重写要求方法名,返回类型、参数类型、参数个数全部相同。最后是方法重
写的访问权限只能扩大(权限大小:public > protected > 缺省 > private),而方法重载对权限无要求。

Java -- 构造函数 & this & 方法重写和方法重载的区别的更多相关文章

  1. Java中方法重写和方法重载

     首先方法重写和方法重载是建立在Java的面向对象的继承和多态的特性基础上而出现的.至于面向对象的继承和多态的特性我就不在这里多说了.继承是指在一个父类的基础再创建一个子类,这样子类就拥有了父类的非私 ...

  2. Java方法重写与方法重载

    方法重载:发生在同一个类中,方法名相同方法形参列表不同就会重载方法. 方法重写:发生在继承当中,如果子的一个类方法与父类中的那个方法一模一样(方法名和形参列表一样),那么子类就会重写父类的方法. 方法 ...

  3. 方法重写和方法重载;this关键字和super关键字

    1:方法重写和方法重载的区别?方法重载能改变返回值类型吗? 方法重写: 在子类中,出现和父类中一模一样的方法声明的现象. 方法重载: 同一个类中,出现的方法名相同,参数列表不同的现象. 方法重载能改变 ...

  4. 在java中为啥要重写toString 方法?

    在java中为啥要重写toString 方法?下面以一个简单的例子来说明. 先定义一个test5类.并写它的get,set方法. package test5; public class Test5 { ...

  5. 【java开发】方法重写和方法重载概述

    类的继承   父类-子类 关键字 extends 新建一个父类 public class Person {     private String name;          private int ...

  6. Java 深度克隆 clone()方法重写 equals()方法的重写

    1.为什么要重写clone()方法? 答案:Java中的浅度复制是不会把要复制的那个对象的引用对象重新开辟一个新的引用空间,当我们需要深度复制的时候,这个时候我们就要重写clone()方法. 2.为什 ...

  7. C#中隐藏(new)、方法重写(override)、重载(overload)的区别

    转自:http://www.cnblogs.com/glife/archive/2009/12/28/1633947.html 重载.重写和隐藏的定义: 重载:public string ToStri ...

  8. 【java基础】为什么重写toString()方法?

    不得不说,有很多java初学者写java实体类的时候,并没有真正理解重写toString() 方法,可能是口头知道也可能是跟风随带添加toString() 方法,并没有真正理解其意义,如果真要被问起来 ...

  9. C++学习笔记24,方法重写与方法隐藏

    该博文仅用于交流学习.请慎用于不论什么商业用途.本博主保留对该博文的一切权利. 博主博客:http://blog.csdn.net/qq844352155 转载请注明出处: 方法重写.是指在子类中又一 ...

随机推荐

  1. 30、进程的基础理论,并发(multiprocessing模块)

    我们之前基于tcp所做的通信都只能一个一个链接只有关闭当前链接时才能去链接下一个通信,这显然与现实情况不合.今天我们将来学一个新的概念进程,来做一个python多进程的并发编程.还会贴一个用json序 ...

  2. “扩展域”与"边带权"的并查集

    https://www.luogu.org/problemnew/show/P1196 银河英雄传说 #include<bits/stdc++.h> using namespace std ...

  3. file_get_contents 在本地测试可以, 但在服务器上报错403

    解决方法: Most likely if you don't get any content while accessing an webpage, probably it doesn't want ...

  4. javascript的数组之slice()

    slice()方法创建一个新数组,将原数组的部分元素拷贝到新数组,并将新数组返回,且原数组不会被修改. var animals = ['ant', 'bison', 'camel', 'duck', ...

  5. vim编辑器显示行号

    Vim编辑器显示行号的设置 1. 显示行号 :set nu 2. 不显示行号 :set nonu :set nu :set nonu

  6. AIROBOT系统 之 私人存储 和 DLNA 智能电视云

    需求背景 工作多年之后发现有太多的电子资料到处存放.个人电脑是Mac,硬盘都不大,放不了太多东西.并且有时候想随时随地存放一些东西.所有就有了大家一个私有存储的需求 个人休息在家经常喜欢看电影电视剧, ...

  7. Kali 开启 SSH 服务方法

    尝试了开启kali的ssh,方法如下: 1.修改sshd_config文件.命令:vim /etc/ssh/sshd_config 2.将#PasswordAuthentication no的注释去掉 ...

  8. PHPstorm 2017激活

    网上看了很多,有用没几个.特别亲身试验了下.有一个有用的.摘录下来.备忘. 感谢该篇博文的作者.https://blog.csdn.net/veloi/article/details/71307942 ...

  9. /etc/inittab文件详解

    /etc/inittab由/sbin/init程序解析调用,用于系统初始化,/sbin/init可参考源码busybox中init.c的实现方式. 原址如下: http://leejia.blog.5 ...

  10. python读取数据库并把数据写入本地文件

    一,介绍 上周用jmeter做性能测试时,接口B传入的参数需要依赖接口A生成的借贷申请ID,接口A运行完需要把生成的借贷申请ID导出来到一个文件,作为参数传给接口B,刚开始的时候,手动去数据库倒, 倒 ...