类实际上是对象操作的模板,类是不能直接使用的,必须通过实例化对象来使用。
类是由属性和行为两部分组成
package testClass;
//面向对象设计的一大特点就是封装
//规范的程序会把类中的属性隐藏,但是留出访问方式。
public class PrivatePerson{
private String name;//private关键字确保属性只能在类中访问
private int age;
public PrivatePerson(String name, int age) {
this.name = name;
this.age = age;
}
//为了在外部程序访问和修改属性,提供setter和getter
//alt+insert可以自动生成setter和getter
public void setName(String name){
this.name = name;
}
public void setage(int age){
this.age = age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
//对象的比较非常重要,String类有equals方法来比较不同对象是否相同
//编写一个对象比较函数
public boolean compare(PrivatePerson person){
if(person == null)return false;//防止NullPointerException
if(this == person)return true;//如果引用对象和本对象地址相同,不用进行具体的判断了
if(this.name.equals(person.name)&&this.age == person.age) return true;//如果各项属性都相同,返回true
/*如果类的属性采用了private封装,那么在类的外部不能通过对象直接调用该属性。
但是如果将一个对象传递回类的方法里,相当于取消了封装,可以直接通过对象访问属性
所以上面不用写成this.name.equals(person.getName())&&this.age == person.getAge;*/
else return false;
}
}
内存情况:同一个类的多个对象在堆内存中有不同的内存划分,成员变量存储在各自的内存区域中,但是成员方法是多个对象共用的。
通常把属性封装,但是留出方法来调用和修改属性。有以下几种权限修饰符:
可以简单的理解为:private只能在一个类中访问,default只能在一个包中访问,protected在不同包的子类中访问,public在所有情况下都可以访问。
public class:类名必须与文件名相同。在一个*.java文件中只能有一个public class声明。如果一个类想在不同的包中被使用,就必须定义为public class。
class:文件名可以与类名不同,而且一个*.java文件中可以有多个class声明,编译后会形成多个*.class文件。如果一个类使用class声明,那么这个类只能被本包访问。
在实际的开发中,通常只会使用public class声明,而且一个文件一般只有一个类。
原文:https://www.cnblogs.com/yellowchives/p/15194764.html