2020/10/23 oop1 面向对象的第一天正式学习

本文介绍了面向对象编程中的类与对象概念,通过Java代码展示了如何定义类、创建对象以及使用构造方法进行初始化。同时,讨论了解决对象属性赋值时可能出现的问题,提出了两种解决方案。此外,还探讨了封装的重要性,包括属性私有化和公共方法的使用,以及构造方法在对象初始化中的角色。
摘要由CSDN通过智能技术生成

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();

 

 

继承跟多态等明天再继续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值