重载
1.一个类中不能声明多个相同的方法,属性。
2.上面的相同指的是方法名,参数列表相同。和返回值类型无关。
3.如果方法名相同,但是参数列表(个数,顺序,类型)不相同,会认为是不同的方法,在java中被称之为重载
下面就是相同的方法[方法名和参数列表相同]
class UserLogin{
void login(){
System.out.println("微信登录");
}
void login(){
System.out.println("账号密码登录");
}
}
ps:上面是两个不相同的方法,方法名和参数列表相同
不同的方法
class UserLogin{
void login(String wx){
System.out.println("微信登录");
}
void login(){
System.out.println("账号密码登录");
}
}
ps:上面是两个不同的方法,虽然他们的名称相同,但是参数列表不同
重载的简单演示
public class study01 {
public static void main(String[] args) {
UserLogin user1 = new UserLogin();
user1.login("weixin");
user1.login("123", 456);
}
}
class UserLogin{
void login(String wx){
System.out.println("微信登录");
}
void login(String acount, int number6){
System.out.println("账号密码登录");
}
}
ps:控制台打印的是:
微信登录
账号密码登录
构造方法也存在重载
public class study01 {
public static void main(String[] args) {
UserLogin user1 = new UserLogin();
user1.login("weixin");
user1.login("123", 456);
}
}
class UserLogin{
// 执行的是这个
UserLogin(){
System.out.println("构造方法");
}
// 如果要执行这个,需要传递一个参数
UserLogin(String Logintype){
System.out.println("构造方法"+ Logintype);
}
void login(String wx){
System.out.println("微信登录");
}
void login(String acount, int number6){
System.out.println("账号密码登录");
}
}
执行的是:
构造方法
微信登录
账号密码登录
如果在一个构造方法中,想要调用其他的构造方法,那么需要使用关键字 this
在一个构造方法中调用其的构造方法
package studyDemo9yue;
public class study01 {
public static void main(String[] args) {
UserLogin user1 = new UserLogin();
}
}
class UserLogin{
// 执行的是这个
UserLogin(){
<!-- 在构造函数中调用另外一个构造函数,使用this;并且this要在该函数的最顶部 -->
this("微信登录");
}
UserLogin(String Logintype){
<!-- 在构造函数中调用另外一个构造函数,使用this;并且this要在该函数的最顶部 -->
<!-- 通过参数来判断调用的是哪一个构造函数 -->
this(Logintype, "张三");
}
UserLogin(String Logintype, String userName){
System.out.println(Logintype + userName);
}
}
java 基本数据类型的位数
byte 1字节 8 bit
short 2字节 16 bit
int 4字节 32 bit
long 8字节 64 bit long型的结尾需要加L
上面的是:整数类型
float 4字节 32 bit 对于float类型,需要加上f后缀。
double 8字节 64 bit 小数默认为double
上面的是:浮点类型
char 2字节 16 bit 字符类型
boolean 1字节 1 bit 布尔类型

基本数据类型在匹配方法时,可以在数值不变的情况下,扩大数据精度
public class study01 {
public static void main(String[] args) {
byte a=10;
demo1(a);
}
static void demo1(byte b){
System.out.println("bbb");
}
static void demo1(short s){
System.out.println("ssss");
}
static void demo1(char c){
System.out.println("cccc");
}
}
输出的是:
bbb这个很好理解。 因为是按照类型来匹配的。
如果下面的方法中没有byte会怎么样呢?
public class study01 {
public static void main(String[] args) {
byte a=10;
demo1(a);
}
static void demo1(short s){
System.out.println("ssss");
}
static void demo1(char c){
System.out.println("cccc");
}
}
输出的是:ssss
因为:基本数据类型在匹配方法时,可以在数值不变的情况下,扩大数据精度。
byte类型无法和char类型做转化。因为char没有负数。但是byte存在负数。
重载-思考打印多少
public class study01 {
public static void main(String[] args) {
// 这里声明的是AA类型的。 因此是打印出aaa
AA aa = new AA();
test(aa);
}
static void test(AA aa){
System.out.println("aaa");
}
static void test(BB bb){
System.out.println("bbb");
}
}
class AA{
}
class BB extends AA {
}
打印出aaa
重载和多态的思考
new的是子类对象,声明的是父类。那么实例只能取调用父类方法和属性
public class study01 {
public static void main(String[] args) {
// new的是子类对象,声明的是父类。那么实例只能取调用父类方法和属性
AA aa = new BB();
test(aa);
}
static void test(AA aa){
System.out.println("aaa");
}
static void test(BB bb){
System.out.println("bbb");
}
}
class AA{
}
class BB extends AA {
}
打印的是:aaa