面向对象1

来源:互联网 发布:机智股票自动交易软件 编辑:程序博客网 时间:2024/06/18 05:40

面向对象

  1、其三个主要特性:封装性、继承性、多态性。其中继承分为单继承和多继承,多态性分为方法重载和对象多态。

2、类由属性和方法组成。

3、栈里存的都是局部变量。

4、封装之后的属性必须通过getter和setter进行访问

//构造方法

1、构造函数功能:是对对象进行初始化,且只执行一次。

2、多构造函数在类中的体现就是重载形式。

3、java中一般函数名首字母小写

4、构造函数是可以私有化的,但是一旦私有化其他程序就无法对该类创建对象,原因:无法对创建的对象进行初始化(要用setter和getter方法)

5、匿名对象:

public class NiMing20
  {
    public static void main(String[] args)
    {
        new Person("闫哲",21,"男").tell();//匿名对象,其中匿名对象只使用一次,只在堆内存中开辟空间,不存在栈内存的引用
        
    }
  }

非匿名对象

public class ChongZai2
  {
    public static void main(String[] args)
    {
        Person per=new Person();//per为对象,声明并实例化对象
        per.setName("闫哲");
        per.setAge(21);
        per.setSex("男");
        per.tell();//输出信息
    }
  }

均输出结果:姓名:闫哲 年龄:21 性别:男

代码如下:

class  Person{
    private String name;
    private int age;
    private String sex;
    public Person(){}
    
    public Person(String name,int age,String sex)
    {
        this.setName(name);
        this.setAge(age);
        this.setSex(sex);
    }
    public void tell()
      {
        System.out.println("姓名:"+getName()+"  年龄:"+getAge()+"  性别:"+getSex());
      }
      public String getName()
      {
          return name;
      }
      public void setName(String n)
      {
          name=n;
      }
      public int getAge()
      {
          return age;
      }
      public void setAge(int a)
     {
          if(a>=0&&a<120)
         {
            age=a;
          }
      }
       public String getSex()
    {
          return sex;
    }
      public void setSex(String m)
    {
          sex=m;
    }
}
    public class NiMing20
  {
    public static void main(String[] args)
    {
        new Person("闫哲",21,"男").tell();//匿名对象,其中匿名对象只使用一次,只在堆内存中开辟空间,不存在栈内存的引用
        
    }
  }

实例(学生信息):

class  Student{//类
    private String stuno;//封装,私有化
    private String name;
    private float math;
    private float english;
    private float computer;
    public Student(){}//定义无参构造
    public Student(String stuno,String name,float math,float english,float computer){//构造函数并为属性初始化
        this.setStuno(stuno);
    this.setName(name);
    this.setMath(math);
    this.setEnglish(english);
    this.setComputer(computer);
    }
    public String getName(){
            return name;//设置编号
    }
    public void setName(String n)
    {
            name=n;//取得编号
    }
    public String getStuno(){
            return stuno;
    }
    public void setStuno(String a)
    {
            stuno=a;
    }
    public float getMath(){
            return math;
    }
    public void setMath(float b)
    {
            math=b;
    }
    public float getEnglish(){
            return english;
    }
    public void setEnglish(float c)
    {
            english=c;
    }
    public float getComputer(){
            return computer;
    }
    public void setComputer(float d)
    {
            computer=d;
    }
    public float sum(){
        return math+english+computer;
    }
    public float avg(){
        return this.sum()/3;
    }
    public float max(){
        float max=math;
        max=max>computer?max:computer;
        max=max>english?max:english;
        return max;
    }
    public float min(){
        float min=math;
        min=min<computer?min:computer;
        min=min<english?min:english;
        return min;
    }
}
public class ShiLi
{
    public static void main(String[] args)
    {
        Student stu=null;
        stu=new Student("asfd-56","李兴华",95.0f,19.0f,56.0f);//实例化Student对象,并通过构造方法赋值
        System.out.println("编号"+stu.getStuno());//输出
        System.out.println("姓名"+stu.getName());
        System.out.println("数学成绩"+stu.getMath());
        System.out.println("英语成绩"+stu.getEnglish());
        System.out.println("计算机成绩"+stu.getComputer());
        System.out.println("最高分"+stu.max());
        System.out.println("最低分"+stu.min());
    }
}
输出结果:

需要注意的问题:1、注意注意构造函数属性的类型(int、float、String)2、getter(定义类型String等)和setter(void)方法的使用


0 0
原创粉丝点击