Java -- 构造函数 & this & 方法重写和方法重载的区别
JAVA:
1、构造方法的作用:
一是创建对象时调用构造方法创建对象,二是可以初始化多个属性
1、结构:【public 类名([参数类型1 参数名1,参数类型2 参数名2..... ])】
2、参数可无
3、一般在创建一个类的时候,如果创建的类没有构造函数程序会自动创建一个默认的无参构造函数,当你在类中已经写有构造函数,那么默认无参构造函数将会被覆盖,也就是不存在。
this主要有三个作用:
1、在本类中作为对象调用属性,在属性名与参数名相同时,需要用this来调用属性给属性赋值,否则无法赋值。
2、调用构造函数
3、可以返回本类对象(目前用途我还不是很清楚...)
package object1;
public class Student {
//属性 (四种访问权限的属性)
public String name;
protected String sno;
int score;
private int age;
//注意点:1不能写返回类型 2 方法名为类名。 结构为 public 类名([参数]){};
public Student(String name,String sno) {
//初始化属性
this.name = name;
this.sno = sno;
}
/*
* 方法重载(构造方法也可以重载) 1方法名相同 2返回类型、参数类型/个数不能全部相同
*/
public Student(){
//调用另一个构造函数(方法)
this("缺省","20190123");
/* 初始化属性
name = "B"; */
}
public void Study()
{
System.out.println(name + "正在学习...");
}
protected void Study(String sno,String name)
{
System.out.println(name + "的学号时是:"+sno);
}
public Student object() {
return this;
}
}
主类
package object1;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Student stu1 = new Student("abc","123");
Student stu3;
System.out.println("用无参构造函数生成对象stu1: \n");
stu1.Study();
stu1.Study("201901", "abc");
System.out.println();
Student stu2 = new Student("ABC","20190123");
System.out.println("用有参构造函数生成对象stu2: \n");
stu2.Study();
stu2.Study("201923", "A");
/* //对属性的使用
stu1.name = "B";
stu1.sno = "90120123";
stu1.score = 100;
//报错,因为age是私有属性,不能被其他类直接调用
stu1.age = 18; */
stu3 = stu1.object();
stu3.Study();
stu3.name = "bvjkbsd";
System.out.println(stu3.name);
}
}
运行结果
用无参构造函数生成对象stu1:
abc正在学习...
abc的学号时是:201901 用有参构造函数生成对象stu2:
ABC正在学习...
A的学号时是:201923 stu3:
abc正在学习...
bvjkbsd
两个都是原方法已经无法满足需求了而重写或者重载,但两者依旧是有区别的。两者最明显的区别就是方法重载是在同一个类中写的,方法重写是在子类中对父类的方法进行重写,也就
是不同类中,其次方法重载是要求方法名相同,返回类型、参数类型、参数个数至少要有一个不一样,而方法重写要求方法名,返回类型、参数类型、参数个数全部相同。最后是方法重
写的访问权限只能扩大(权限大小:public > protected > 缺省 > private),而方法重载对权限无要求。
Java -- 构造函数 & this & 方法重写和方法重载的区别的更多相关文章
- Java中方法重写和方法重载
首先方法重写和方法重载是建立在Java的面向对象的继承和多态的特性基础上而出现的.至于面向对象的继承和多态的特性我就不在这里多说了.继承是指在一个父类的基础再创建一个子类,这样子类就拥有了父类的非私 ...
- Java方法重写与方法重载
方法重载:发生在同一个类中,方法名相同方法形参列表不同就会重载方法. 方法重写:发生在继承当中,如果子的一个类方法与父类中的那个方法一模一样(方法名和形参列表一样),那么子类就会重写父类的方法. 方法 ...
- 方法重写和方法重载;this关键字和super关键字
1:方法重写和方法重载的区别?方法重载能改变返回值类型吗? 方法重写: 在子类中,出现和父类中一模一样的方法声明的现象. 方法重载: 同一个类中,出现的方法名相同,参数列表不同的现象. 方法重载能改变 ...
- 在java中为啥要重写toString 方法?
在java中为啥要重写toString 方法?下面以一个简单的例子来说明. 先定义一个test5类.并写它的get,set方法. package test5; public class Test5 { ...
- 【java开发】方法重写和方法重载概述
类的继承 父类-子类 关键字 extends 新建一个父类 public class Person { private String name; private int ...
- Java 深度克隆 clone()方法重写 equals()方法的重写
1.为什么要重写clone()方法? 答案:Java中的浅度复制是不会把要复制的那个对象的引用对象重新开辟一个新的引用空间,当我们需要深度复制的时候,这个时候我们就要重写clone()方法. 2.为什 ...
- C#中隐藏(new)、方法重写(override)、重载(overload)的区别
转自:http://www.cnblogs.com/glife/archive/2009/12/28/1633947.html 重载.重写和隐藏的定义: 重载:public string ToStri ...
- 【java基础】为什么重写toString()方法?
不得不说,有很多java初学者写java实体类的时候,并没有真正理解重写toString() 方法,可能是口头知道也可能是跟风随带添加toString() 方法,并没有真正理解其意义,如果真要被问起来 ...
- C++学习笔记24,方法重写与方法隐藏
该博文仅用于交流学习.请慎用于不论什么商业用途.本博主保留对该博文的一切权利. 博主博客:http://blog.csdn.net/qq844352155 转载请注明出处: 方法重写.是指在子类中又一 ...
随机推荐
- PC_官网设计
1. 头部 header 固定 的两种方式 固定定位 内容区 包裹,使用 overflow: hidden; 2. 动画第二次起效 缺少动画初始参数 3. 隐藏元素 display: none; vi ...
- 重构file_get_contents实现一个带超时链接访问的函数
function wp_file_get_contents($url, $timeout = 30) { $context = stream_context_create(array( 'http' ...
- [LeetCode] Design HashMap 设计HashMap
Design a HashMap without using any built-in hash table libraries. To be specific, your design should ...
- Web版记账本开发记录(一)代码和功能展示
一丶基本机构 数据库截图 record表 年份表 index.jsp <%@ page language="java" contentType="text/html ...
- JavaScript 中的FileReader对象(实现上传图片预览)
方法一:使用js的FileReader对象 1.FileReader对象简介 1.检测浏览器对FileReader的支持 if(window.FileReader) { var fr = new Fi ...
- Linux下提权常用小命令
有些新手朋友在拿到一个webshell后如果看到服务器是Linux或Unix操作系统的就直接放弃提权,认为Linux或Unix下的提权很难,不是大家能做的,其实Linux下的提权并没有很多人想象的那么 ...
- 2018-2019-2 《网络对抗技术》Exp0 Kali安装 Week1 20165317
第一周作业 Kali的安装 Kali的下载 从kali官网下载kali-linux 64-bit 版本. Kali的安装 由于在娄老师的课上使用virtualbox, 所以我习惯性使用virtual ...
- python之dict
一.字典的定义 在python中,字典数据类型使用{}来定义,在大括号中,存储的是键值对,即key:value的形式,并且key不能有重复值,如果有重复,后面的值会覆盖前面的:值可以重复 # 字典的定 ...
- zabbix实现自定义监控
实现自定义监控项实例 .创建主机组 .创建主机 .创建监控项 .到需要监控的主机的agent中添加自定义的监控项目 cd /etc/zabbix/zabbix_agentd.d vi userpara ...
- pymongo基础
PyMongo是MongoDB数据库的python模块 MongoDB是由C++语音编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统. win10 安装 4.0 使用官网的配置 使用 n ...