Java - 面向对象

对象

开发一个一个对象,把数据交给对象,再调用对象的方法完成对数据的处理。

student.java:

package object;

public class Student {
    String name;
    double chinese;
    double math;

    public void printTotalScore(){
        System.out.println(name+"的总成绩为:" + (chinese  + math ));
    }

    public void printAverageScore(){
        System.out.println(name+"的平均成绩为:" + (chinese  + math ) / 2.0);
    }
}

Test.java:

package object;

public class Test {
    public static void main(String[] args) {
        //创建学生对象,封装对象的数据
        Student s1 = new Student();
        s1.name = "波妞";
        s1.chinese = 98;
        s1.math = 86;
        s1.printTotalScore();
        s1.printAverageScore();
    }
}

输出:

波妞的总成绩为:184.0
波妞的平均成绩为:92.0

面向对象的三大特点:封装、继承、多态

this关键字

this就是一个变量,可以用在方法中,用来拿到当前对象。

主要用来解决:变量名称冲突问题

Test.java:

Student s3 = new Student();
s3.score = 335;
s3.printPass(250);

Student.java:

double score;
    public void printPass(double score){
    //this.score表示当前对象的score
        if(this.score > score){
            System.out.println("分高高高");
        }else{
            System.out.println("没到线~~");
        }
    //不加this,则score都为250,肯定输出没到线
    }

输出:

分高高高

构造器

特点:

  • 创建对象时,对象会根据参数情况去调用构造器:Student s = new Student();

应用场景:

  • 创建对象时,同时完成对对象成员变量(属性)的初始化赋值

注意:

  • 类在设计时,如果不写构造器Java会为类自动生成一个无参数构造器。
  • 一旦定义了有参数构造器,java就不会帮我们自动生成无参数构造器,需要自己手写无参数构造器

 Test.java:

Student s4 = new Student("波妞", 98);
System.out.println(s4.name);
System.out.println(s4.score);

Student.java:

public Student(String name,double score){
        System.out.println("有参数构造器触发");
        this.name = name;
        this.score = score;
    }

输出:

有参数构造器触发
波妞
98.0

封装

用类设计对象处理某个事物的数据时,应该把要处理的数据及处理数据的方法,设计导一个对象中去。

设计规范:合理隐藏,合理暴露;

/* 文件名: EncapTest.java */
public class EncapTest{
 
   private String name;
   private String idNum;
   private int age;
 
   public int getAge(){
      return age;
   }
 
   public String getName(){
      return name;
   }
 
   public String getIdNum(){
      return idNum;
   }
 
   public void setAge( int newAge){
      age = newAge;
   }
 
   public void setName(String newName){
      name = newName;
   }
 
   public void setIdNum( String newId){
      idNum = newId;
   }
}

以上实例中public方法是外部类访问该类成员变量的入口。

通常情况下,这些方法被称为getter和setter方法

因此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法。

/* F文件名 : RunEncap.java */
public class RunEncap{
   public static void main(String args[]){
      EncapTest encap = new EncapTest();
      encap.setName("James");
      encap.setAge(20);
      encap.setIdNum("12343ms");
 
      System.out.print("Name : " + encap.getName()+ 
                             " Age : "+ encap.getAge());
    }
}

//Name : James Age : 20

实体类

  1. 类中的成员变量都要私有,并且对外提供相应的getXxx,setXxx方法
  2. 类中必须要有一个公共的无参构造器

主要用于保存数据,操作数据应该重新定义一个类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值