object :对象,物体。 encapsulation:封装,包装。 attribute:属性特征
method:方法 member:成员 constructor:构造方法,构造函数
类与对象
类:具有相同特征和行为的一组事物集合 {
特征: 全局变量 成员变量 成员属性
行为:成员方法 成员函数 }
对象:确定的特征的状态和行为的事物
对象是类的具体表现,类是对象模板
具体来说的话就是
先定义一个类,然后在主函数中给这个类的成员变量附上具体的值。
public class Student { //学生类
int sid;
String sname;
int sage;
Address addr=new Address()
public void showInfo()
{
System.out.print("学号:"+sid+"年龄:"+sage+"名字:"+sname);
addr.showInfo();
}
}
public class Test1 {
public static void main(String[] args) {
Student s=new Student();
Student s01=new Student();
s01.sname="dqh";
s01.sid=1;
s01.sage=18;
//解决为什么地址会出现NullPointerExcetion情况
//第一种 在类中new Address对象
s01.addr.province="湖南省";
s01.addr.city="衡阳市";
s01.addr.addr="珠晖区";
//第二种方法 先创建一个地址对象,并赋值 最后进该地址对象赋值给学生对象的地址属性
Address a=new Address();
a.province="湖南省";
a.city="衡阳市";
a.addr="珠晖区";
s.addr=a;
s01.showInfo();
s.showInfo();
}
}
然后的话其实对地址赋值中出现了点问题,然后试了下可以用两个方法解决
第一种 在类中new Address对象
第二种方法 先创建一个地址对象,并赋值 最后进该地址对象赋值给学生对象的地址属性
面向对象三大特征:封装,继承,多态。
封装:方法、属性或方法实现细节隐藏,不被外界访问,保证数据的安全性。
1.属性私有化 private
2.函数公共类 public
public class Student { //学生类
private int sid;
private String sname;
private int sage;
Address addr=new Address();
//赋值 setter方法 set+属性名
public void setSid(int outSid)
{
sid=outSid;
}
public void setSname(String outsname)
{
sname=outsname;
}
public void setAge(int outAge)
{
if(outAge>6||outAge<100)
{
sage=outAge;
}else{
System.out.println("年龄不合法");
}
}
public int getAge()
{
return sage;
}
public int getSid()
{
return sid;
}
public String getSname()
{
return sname;
}
public void showInfo()
{
System.out.print("学号:"+sid+" "+"年龄:"+sage+" "+"名字:"+sname+" ");
addr.showInfo();
}
}
上面差不多就是对属性私有化和方法公有化的使用。
this:实例化的成员变量和某方法的参数变量同名时,使用this
public void setSid(int sid)
{
this.sid=sid; //this指向当前对象 谁调用此方法就执行谁
}
构造方法:
方法名与类名相同,无返回值且不能使用void修饰
public 类名(形参列表){
}
作用方法:与new关键字一起使用,完成对象初始化操作(创建对象)
类名 引用名 = new 构造函数名();
1.每个类中都有一个默认的无参数的构造方法,无需显示定义;
2.一旦类中定义了带参数的构造方法,默认被覆盖了,如需使用,必须显示定义;
public Student() //(默认无参数的构造方法(写出来显示下))
{
System.out.println();
}
public Student(int sid,String sname,int sage) //带参数的构造方法
{
this.sid=sid;
this.sname=sname;
this.sage=sage;
}
Student s=new Student(01,"zhu",18); //调用
s.showInfo();
继承跟多态等明天再继续。