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 转载请注明出处: 方法重写.是指在子类中又一 ...
随机推荐
- 《Head First JavaScript》 学习笔记
<scipt type="text/javascript" src"cookie.js"> </script> //脚本署名方法 &l ...
- Python全栈-magedu-2018-笔记4
第三章 - Python 内置数据结构 元组tuple 一个有序的元素组成的集合 使用小括号 ( ) 表示 元组是不可变对象 元组的定义 初始化 定义 tuple() -> empty tupl ...
- LeetCode 96 - 不同的二叉搜索树 - [DP]
假定 $f[n]$ 表示有 $n$ 个节点的二叉树,有多少种不同结构. 因此 $f[n] = \sum_{i=0}^{n-1} (f[i] \times f[n-1-i])$,选一个节点作为根节点,那 ...
- spring boot异常积累
1.异常:Error resolving template "xxx", template might not exist or might not be accessible.. ...
- Mysqlutil.JDBCutil.Dtabaseutil数据库操作工具类[批量操作]
一个用来操作数据库的常用工具类. 提供批量操作,生成建表,插入语句等 操作示例: // 1.获取连接 DataBaseUtil jdbc = new DataBaseUtil(); jdbc.getC ...
- django的分页与添加图片
分页: 在主页面的views里写接口 导包: from django.core.paginator import Paginator 接口: id=request.GET.get("page ...
- python to shell vimdiff
目录 #!/bin/python3 import os import sys if(len(sys.argv) != 3): exit ("Usage: argv1:fullPath.txt ...
- 学习ActiveMQ(八):activemq消息的持久化
1. 持久化方式介绍前面我们也简单提到了activemq提供的插件式的消息存储,在这里再提一下,主要有以下几种方式: AMQ消息存储-基于文件的存储方式,是activemq开始的版本默认的消息存储方式 ...
- Spring Boot web简介及原理 day04
一.SpringBoot创建web开发(三部曲) 1.快速构建SpringBoot项目,并以jar包的形式构建 2.选择对应的功能模块 (选定场景,配置少量的配置就可运行,不配置有默认值) 3.编写自 ...
- Mybatis-Plus 3.0代码生成器
package com.kyplatform.generator; import com.baomidou.mybatisplus.core.exceptions.MybatisPlusExcepti ...