文章目录
Java类的相关概念和操作(1)
介绍:我们知道,在Java面向对象编程中,有一个非常重要的概念——类,类中有很多的属性和方法,接下来让我来给大家简单介绍一下这些常见的属性和方法以及操作(private权限)
Class 中有很多的属性,通常我们在初始化一个类的时候,一般来说类中会提供构造函数来辅助我们对类进行初始化例如:
class Student{
String name;
String classname;
String phone;
public Student(String name,String classname,String phone){
this.name = name;
this.classname = classname;
this.phone = phone;
}
}
上面展示的就是一个类的构造函数,一般来说,我们将类的属性封装在类中,用private修饰权限,拒绝外部代码来访问我们的私有属性。为了避免一下这种写法:
class Student{
String name;
String phone;
}
class doMain{
public static void main(String[] args){
Student st = new Student();
st.name = "Jack Wang";
st.phone = "010-1234567";
System.out.println(st.name);
System.out.println(st.phone);
}
}
这种方式去初始化一个类的话,首先就我们来看的话,这么写长得太难看,再者说一定程度上破坏了我们的封装性。所以大多数时候会采用下面这种方式来进行类的初始化。
class Student{
private String name;
private String phone;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public String getPhone(){
return phone;
}
public void setPhone(String phone){
this.phone = phone;
}
public Student(){
}
//这里解释一下为什么两种构造函数都写上,我们知道,在类初始化的时候,如果没有写构造函数,那么默认的就是无参的构造函数;但是我们写了构造函数的话,那么编译器默认调用的就是我们写的构造函数,但是参数列表不匹配的话就会报错,所以一般来说,两种构造函数我们都写上
public Student(String name,String phone){
this.name = name;
this.phone = phone;
}
}
class doMain{
public static void main(String[] args){
Student st = new Student("Jack Wang","12345678");
System.out.println(st.getName+" "+st.getPhone());
st.setName("JackMa");
System.out.println(st.getName());
}
}
//这里解释一下为什么用getName()来访问变量,我们观察到Student类中,name已经是private权限的,不供外部代码访问,想要访问和修改该成员变量的值只能通过提供的set和get方法
我们注意到,有private成员变量,那是不是也有private方法呢?
答案是不言而喻的,既然存在private成员变量,肯定也有private方法,private方法,权限和private变量类似,只允许在类中使用,而不能提供给外部代码调用!
例如:
public class Main {
public static void main(String[] args) {
Person ming = new Person();
ming.setBirth(2008);
System.out.println(ming.getAge());
}
}
class Person {
private String name;
private int birth;
public void setBirth(int birth) {
this.birth = birth;
}
public int getAge() {
return calcAge(2019); // 调用private方法
}
// private方法:
private int calcAge(int currentYear) {
return currentYear - this.birth;
}
}
版权声明:本文为ShabbyWang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。