类和对象总结
知识点总结
1. 有参的方法在使用中,这个形参一定要注意。
如果只有这一个方法中用这个形参,用完之后其他地方不再使用,那么可以不用再单独赋值为全局变量;
如果这个方法中用了这个参数后,成员变量或者方法中再次调用,务必要赋值。
参考如下图,标红的地方:
**2. 在一个类中,定义另一个类的对象,使用时容易出现死循环或者指针异常等。**现把遇到的问题归纳如下:
(1)首先,不建议在一个类中,去new一个其他类。(不包含main方法)
因为new了后,在没赋值情况下,点不出属性来。这里说的点不出属性,不是真的点不出,而是因为在由于没赋值情况下,对象是null,再点的话就会出现异常。
解决方法:可以不用new,直接用类定义一个属性就行。
比如:Wife和Husband都是类,在Wife类里,可以定义Husband属性。
Husband husband;
注意不要Husband husband = new Husband();
(2)其次,在main方法调用类进行属性赋值时,务必一定先new那个被调用的对象,赋值完成后;再new 本身这个类,再赋值它自身的属性值。
否则,顺序颠倒,还是会出现空异常等。
3. 用一个类来定义属性的时候,看着是仅仅一个变量名,实际上这个名字是个对象,包含这个对象类名中里的所有属性和方法。
比如Wife wife;
wife不是仅仅一个变量名,而是一个对象,这个对象可以有name、age属性等,有什么属性或方法就看Wife()这个类中是怎么写的了。
练习总结
1.编写一个Student类:
(1) 属性:姓名name、性别gender、年龄age、学号id属性。
(2) 类中有一个show方法,返回String类型,包含学生的所有信息。
(3) 在另一个测试类StudentTest类中的main方法,创建Student对象,访问所有属性和show方法。
**Student类代码如下:
String name;
String gender;
int age;
int id;
public String show() {
return "学生姓名为:" + name + ",性别为:" + gender + ",年龄为:" + age + ",学号为:" + id;
}
测试类代码如下:
public class StudentTest {
public static void main(String[] args) {
Student stu = new Student();
stu.name="王明";
stu.gender= "女";
stu.age = 20;
stu.id = 20200102;
System.out.println(stu.show());
}
}
2.定义一个丈夫Husband类和妻子Wife类:
(1) Husband类有姓名、年龄、妻子属性。
(2) 妻子Wife类,有姓名、年龄、丈夫属性。
(3) 丈夫类中有一个showInfo方法,能显示自己的姓名,年龄,和他的妻子的姓名,年龄。
(4) 妻子类中有一个showInfo方法,能显示自己的姓名,年龄,和她的丈夫的姓名,年龄。
(5) 定义一个测试类,创建妻子和丈夫对象,分别给属性赋值,然后测试两个showInfo方法。
Wife类代码如下:
public class Wife {
String name;
int age;
Husband husband;
public void showInfo() {
System.out.println("妻子的姓名:"+name+",年龄:"+age);
System.out.println("她丈夫的信息为,姓名:"+husband.name+",年龄:"+husband.age);
}
}
Husband类代码如下:
public class Husband {
String name;
int age;
Wife wife;
public void showInfo() {
System.out.println("丈夫的姓名:"+name+",年龄:"+age);
System.out.println("他妻子的信息为,姓名:"+wife.name+",年龄:"+wife.age);
}
}
测试类代码如下:
public static void main(String[] args) {
Wife wife = new Wife();
Husband husband = new Husband();
wife.name = "孙小丽";
wife.age = 38;
wife.husband =husband;
husband.name = "张小明";
husband.age =40 ;
husband.wife =wife;
wife.showInfo();
System.out.println("-------------------------");
husband.showInfo();
}