本周学习:类与对象
通过看b站和csdn学习的类与对象,还是和c++有些不一样的,刚使用起来感觉有点别扭。
那就说下吧
类的定义:
首先说,类是Java程序的基本组成单位。
修饰符 class 类名
{
//成员变量
数据类型 变量1;
数据类型 变量2;
...
//成员方法
方法1;
方法2;
};
这里的成员方法就是c++中的成员函数,与其不同的是c++是写一个public 然后在下面写函数时都是公有的,是不用在每个函数前面写上public的,但这在Java里貌似行不通,在Java里需要在每个函数前都加上public private protected来修饰的。
protected的作用就是数据成员或者成员方法仅类内和子类可见。其他两个容易理解。
就像这样
package LWX.JAVA;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
Person per1= new Person();
Scanner sc = new Scanner(System.in);
per1.showName();
}
}
class Person {
String name;
int age;
public void showName () {
System.out.print(name);
}
public int getAge() {
return age;
}
}
这里我也是调试了很久,因为和c++不太一样。Java里就是以类为基本单位的,一般的,我看视频讲解和csdn上,他们是在写一个package里面,不是写在一个文件里,这样方便浏览修改。再提一点,一个Java类里面也可以把多个类写在同一个文件下,但是,重点来了,一个Java类中只能有一个public类,如果还想再定义一个类,在类前面不用加任何修饰,如果是再创建了一个类,就需要在类前加上public,如下
public class Person{
String name;
int age;
public void showName(){
System.out.print(name);
}
public int getAge(){
return age;
}
}
在Java类中,如果数据成员没有修饰,则默认该数据成员是公有的,这和c++是不同的,和c++中结构体相似,如果要指定访问权限,在数据成员前加上修饰词即可,如果要定义静态数据成员或者成员方法,在前面加上static即可,这和c++是一样的。
例如
public class Person{
private String name;
private int age;
private static int total;
public void showName(){
System.out.print(name);
}
public int getAge(){
return age;
}
}
数据成员的定义
[修饰符] 数据类型 变量名称 ;
private String name;
成员方法的定义
[修饰符] (返回值类型) <方法名> (参数列表) {
方法体;
}
public void showName(){
System.out.print(name);
}
另外,如果把数据成员设置为private,然后我们如果要对该数据成员赋值与使用的话,我们就需要定义公有的的get函数和set函数。
class Person {
private String name;
int age;
public void showName () {
System.out.print(name);
}
public int getAge() {
return age;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return name;
}
}
get函数和set函数后的名称的第一个字母要大写.(注意在写set函数的时候形参时,前面写上变量类型,我一开始忘写了,找了很久才发现)
还有就是,为了写完代码方便查看,我们写set函数时的形参往往与数据成员同名,这时候如果不用this关键字的话,只是写上public void setName(String name){ name=name; }
的话,程序就会调用两次局部的name,也就相当于没赋值,最后输出的时候就返回初始值null。所以就要用到this关键字,这里好像不能和c++一样,叫this指针,因为在Java里是没有指针的。
类的构造方法
就是c++中的构造函数,所以肯定是公有的了
public 类名称(参数列表){
方法体;
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
对象的创建与使用
1.对象的声明
类名称 对象名;
Perosn per1;
2.对象实例化
对象名 = new 类的构造方法(实参列表);
per1=new Person();
当然,我们也可以同时声明与实例化
类名称 对象名 = new 类的构造方法(实参列表);
Person per1=new Person();
3.对象的使用
对象名.属性;
对象名.成员方法();
per1.name;
per1.showName();
关于类与对象就这些吧,还是与c++有所区别的,初学java,还挺新奇的,目前的话学习还是比较容易的,因为有c++的基础,而且这周学习的和这学期c++学的差不多,比较容易理解。另外,关于java中的package与import,目前只是看了,还没实际操作,下周弄懂了再写!路还有很长哦!