欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java面向对象--构造方法、this关键字、JavaBean

程序员文章站 2022-07-10 18:22:45
1、构造方法●对象怎么来的?对象是通过构造方法创建出来的。构造方法的定义语法:访问修饰符 类名(参数列表){ }//访问修饰符 public ●构造方法的方法名称必须和类名相同●构造方法中没有 return 也没有返回值和 void●构造方法不能被 static 等关键字修饰构造方法有两个作用:1.创建对象2.通过构造方法可以对成员变量(属性)进行初始化●一个类中,可以存在多个构造方法,只要构造方法之间的参数列表(个数、类型、顺序的 不同)不同即可●构造方法也可以重载构造方...

1、构造方法

●对象怎么来的?对象是通过构造方法创建出来的。
构造方法的定义语法:

访问修饰符 类名(参数列表){ } //访问修饰符 public  

●构造方法的方法名称必须和类名相同
●构造方法中没有 return 也没有返回值和 void
●构造方法不能被 static 等关键字修饰

构造方法有两个作用:
1.创建对象
2.通过构造方法可以对成员变量(属性)进行初始化

●一个类中,可以存在多个构造方法,只要构造方法之间的参数列表(个数、类型、顺序的 不同)不同即可
●构造方法也可以重载

构造方法分类

构造方法分为:
1.无参数的构造方法
2.有参数的构造方法

其中无参构造又包括:
1.显示无参数的构造方法(用户自定义的)
2. 隐式无参数的构造方法 :当一个类中,不存在任何形式的构造方法的时候,JVM 会默认提供一个无 参数的构造方法。

【当一个类中存在了一个或多个任何形式的构造方法了,那么 JVM 就不会再 提供这个隐式的无参数的构造方法了。】

当一个类中如果存在有参数的构造方法,那么此时还想通过无参数的构造方法 来创建对象,那么只需要添加一个无参数的构造方法即可。

package com.bdit; /* 
构造方法的定义  
*/ public class Test3 { String name; int age; //无参数的构造方法  public Test3(){ //给成员属性进行初始化  name="小明"; age=22; System.out.println("构造方法"); } public Test3(String n,int a){ //把参数赋值给成员属性 name 和 age  name=n; age=a; System.out.println("有参数的构造方法"+n+"  "+a); } public static void main(String[] args) { //创建对象  Test3 t1=new Test3(); //直接输出成员属性  System.out.println(t1.name+" "+t1.age); //用有参数的构造方法创建对象  Test3 t2=new Test3("小红",18); //输出成员属性  System.out.println("name="+t2.name); System.out.println("age="+t2.age); } } 
package com.bdit; /* 
通过 JVM 提供的隐式构造方法来创建对象  
*/ public class Test4 { public static void main(String[] args) { //创建对象  Test4 t=new Test4(); t.test(); } public void test(){ System.out.println("测试"); } } 

练习题

封装一个学生(Student)类:
学生应该有姓名(name)、年龄(age)、性别(gender),班级号(classNum),座位号(sno)。
提供一个有参数的构造化方法以便能很方便的创建一个学生对象。
提供一个方法(displayInfo())用来显示这个学生的姓名、年龄、性别、所在的班级和他的 座位号。
写一个 main 方法创建两个学生对象,分别调用 displayInfo()方法显示各自的信息。

package com.exercise; public class Student { //姓名  String name; //年龄  int age; //性别  String gender; //班级号  String classNum; //座位号  int sno; public Student(String n,int a,String g,String c,int s){ name=n; age=age; gender=g; classNum=c; sno=s; } public void displayInfo(){ System.out.println(" 姓名:"+name+" 年龄:"+age+" 性别:"+gender+" 班 级:"+classNum+" 座位:"+sno); } public static void main(String[] args) { Student stu1=new Student("小明",20,"man","java01",1001); stu1.displayInfo(); Student stu2=new Student("小红",21,"women","java02",1002); stu2.displayInfo(); } } 

2、this关键字

使用 this 关键字的前提条件:
this 关键字只能用在没有被 static 关键字修饰的方法中

this 关键字的作用:
this 关键字表示对当前类某个对象的引用,哪个对象呢?哪个对象调用该方法,该 方法中的 this 关键字就指向哪个对象。

this 关键字的第一种用法:
当方法中参数名或方法中局部变量和成员变量完全一致时,可以通过 this 关键字来 区分成员属性。
语法:this.属性名

当方法中的局部变量或参数同成员变量完全一致时,以局部变量或参数为主(就近原则)

package com.bdit; /* 
this 关键字 区分参数和变量的作用域  
*/ public class Test5 { int num=100; public void display(){ //当方法中的局部变量和成员变量完全一致时,直接输出变量时,JVM 会采用就 近原则进行输出  int num=200; System.out.println(num);//200  System.out.println("成员属性 num"+this.num); } public void display2(int num){ this.num=num;//对象名.num=num;  System.out.println(num); } public static void main(String[] args) { Test5 t=new Test5(); t.display(); //System.out.println("-------------->"+t.num);  } } 

this 关键字的第二种用法:
当 this 以 this(参数列表)的形式出现在构造方法的第一句代码时,就表示当前构造 方法调用了该类中其它的构造方法,通过参数进行匹配。

package com.bdit; /**  
* this 关键字调用构造方法  
* */ public class Test6 { public Test6(){ System.out.println("无参数的构造方法"); } public Test6(int n1,int n2){ System.out.println("两个 int 类型的构造方法"+n1+"  "+n2); } public Test6(String content){ this(); System.out.println("一个 String 类型的构造方法"+content); } public static void main(String[] args) { Test6 t1=new Test6("hello"); } } 

3、JavaBean

JavaBean 是 Java 语言中一种标准的类的定义方式。凡是符合 JavaBean 的定义规范都统称为 JavaBean,但是 JavaBean 也是一个类。

JavaBean 的定义规范:
●成员属性使用 private 关键字来修饰,语法:private 数据类型 属性名;
● 提供一个公共(public)无参数的构造方法
●为所有的私有属性,提供 public 修饰的 set 和 get 方法。

set 方法是无返回值有参数的方法,目的是给成员属性赋值。
set 方法名的命名规则:
public void setXxx(数据类型 参数名),说明 Xxx 是相应的属性名,而且属性名的首 字母大写。

get 方法是有返回值无参数的方法,目的是获取私有属性的值,
get 方法的命名规则:
public 返回值 getXxx(),Xxx 是属性名,首字母大写

private访问修饰符

private 表示私有的,修饰的属性,只能在当前类中被使用。

【类和类之间的方法或属性可以相互被调用,只需要创建一个目标类的对象即可】

package com.bdit; public class Test7 { private String name="张三"; public void display(){ System.out.println(name); } public void setName(String name){ this.name=name; } public String getName(){ return name; } public static void main(String[] args) { Test7 t=new Test7(); t.display(); } } 
package com.bdit; public class Test8 { public void method1(){ //调用 Test7 类中的 display 方法,创建 Test7 的对象  Test7 t1=new Test7(); System.out.println(t1.getName()); //t1.setName("小明");  //t1.display();     }  public static void main(String[] args) { Test8 t=new Test8(); t.method1(); } } 

package创建包

包(package)
引入包的目的:为了管理大型软件系统中,数目众多的类,同时为了能够解决类名命名冲突 的问题,java 中引入了包的概念。

●包其实就是一种目录层次结构的体现
●创建包的语法:package 包名;
●包名可以是多级目录层次,层次之间用英文的点分割
● 例如:package com.bdit; 其实在系统中的体现就是 com 文件夹中一个 bdit 文件 夹,bdit 文件夹中存放着文件。
●包的声明一定是位于源代码的第一句代码。

带包的类:

package com.bdit; public class Test1{ public static void main(String[]args){ System.out.println("HelloWorld"); } } 

import导包

为什么要导包?当两个类不在同一个包下,如果想要能够在当前类中使用目标类,那么就必 须在当前类中导入目标类所在的包。

导包的语法:
import 包名.类名; 或者 import 包名.*;
*表示包下所有的类。
【import 导包一定要位于 package 的下面】

一个 java 源文件中存在多个类

【一个 Java 源文件中,可以存在多个类,但是只能有一个类带 public 访问修饰符,而且 main 方法就要位于该类中,而且 java 源文件的名称还要和带 public 修饰的类类名相同,其它类 都要位于每个类结束大括号的外面,而且不需要添加 public 访问修饰符。】

本文地址:https://blog.csdn.net/vlucky_long/article/details/108268775