一、public和private
public权限是指所有类都能访问,也就是在所有类中都是可见的。
private权限是指只有本类才能访问,只有在本类才可见。
public和private都可以修饰成员。
private成员可以通过本类中public成员进行间接的访问。
public class Person {
private double weight;
public static int counter;
public void setWeight(double w){
weight = w;
}
public double getWeight(){
return weight;
}
}
public class Test {
public static void main(String[] a){
Person p1 = new Person();
p1.setWeight(70);
p1.counter++;
System.out.println("第" + p1.counter + "位顾客的体重是:" + p1.getWeight());
Person p2 = new Person();
p2.setWeight(60);
p2.counter++;
System.out.println("第" + p2.counter + "位顾客的体重是:" + p2.getWeight());
}
}
二、构造方法
1、构造方法是一个特殊的方法。构造方法与类同名,没有返回值。生成对象时系统会自动调用构造方法来构造对象,为对象开辟空间,并赋值。
2、当程序员没有定义构造方法时,系统将提供一个无参的构造方法,为对象开辟空间,赋初值。
public class Person {
private double weight;
public static int counter;
public Person(){
counter++;
}
public void setWeight(double w){
weight = w;
}
public double getWeight(){
return weight;
}
}
public class Test {
public static void main(String[] a){
Person p1 = new Person();
p1.setWeight(70);
System.out.println("第" + p1.counter + "位顾客的体重是:" + p1.getWeight());
Person p2 = new Person();
p2.setWeight(60);
System.out.println("第" + p2.counter + "位顾客的体重是:" + p2.getWeight());
}
}
需要生成对象时就进行的操作代码,可以放在构造方法中。
3、构造方法可以带参数。
4、如果程序员自定义了构造方法,系统将不再提供构造方法。所以在生成对象时需调用程序员自定义的构造方法。
public class Person {
private double weight;
public static int counter;
public Person(double w){
counter++;
weight = w;
}
public void setWeight(double w){
weight = w;
}
public double getWeight(){
return weight;
}
}
public class Test {
public static void main(String[] a){
Person p1 = new Person();//错误,因为系统中没有Person()构造方法。
p1.setWeight(70);
System.out.println("第" + p1.counter + "位顾客的体重是:" + p1.getWeight());
}
}
测试类可以改为
public class Test {
public static void main(String[] a){
Person p1 = new Person(70);
System.out.println("第" + p1.counter + "位顾客的体重是:" + p1.getWeight());
Person p2 = new Person(60);
System.out.println("第" + p2.counter + "位顾客的体重是:" + p2.getWeight());
}
}
三、两个类之间的联系
一个类的对象做为另外一个类的一部分。
方法一:将另外一个类的对象做为另外一个类中方法的局部变量
public class Person {
public void execute(){
Bike b = new Bike();
b.drive();
}
}
public class Bike {
public void drive(){
System.out.println("工作ing");
}
}
方法二、将另外一个类的对象做为另外一个类中方法的形参
public class Person {
public void execute(Bike b){
b.drive();
}
}
public class Bike {
public void drive(){
System.out.println("工作ing");
}
}
public class Test {
public static void main(String[] a){
Person p = new Person();
Bike b = new Bike();
p.execute(b);
}
}
示例
public class Teacher {
String teacherName;
public Teacher(String tempTeacher){
teacherName = tempTeacher;
}
public void execute(Student stu){
stu.submitWork(teacherName);
}
}
public class Student {
String stuName;
public Student(String tempStu){
stuName = tempStu;
}
public void submitWork(String tempTeacherName){
System.out.println(tempTeacherName + "老师" + "要求" + stuName + "交作业");
}
}
public class Test {
public static void main(String[] args) {
Teacher t = new Teacher("邓泓");
Student stu1 = new Student("zhangsan");
Student stu2 = new Student("张三");
Student stu3 = new Student("李四");
t.execute(stu1);
t.execute(stu2);
t.execute(stu3);
}
}