六个问题带你了解java对象

一点一点的了解面向对象。

早期程序大多都是面向问题,面向过程阶段。随着计算机的发展开始出现了面向对象的程序设计语言

第一问:什么是面向过程,面向对象呢?

面向过程:“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程。是不是还是不咋好理解呢?举个例子进行说明吧,比如我们想洗衣服,那么我们需要以下步骤

  • 泡衣服
  • 洗衣服
  • 漂洗衣服
  • 扭干衣服
  • 晾衣服

我们需要一步一步的实现我们的目的
面向对象:把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。举个例子来说明吧,就好比我们洗衣服有了全自动洗衣机(对象),它可以替我们干想干的事。那么我们只需要一下步骤。

  • 将衣服放入洗衣机
  • 晾衣服

第二问:面向对象都有哪些基本概念呢?

面向对象的程序设计主要涉及到对象、封装、类、继承、多态几个基本概念。

第三问:对象是什么意思呢?

面向对象设计是将人们认识世界过程中普遍采用的思维方法应用到程序设计中。类抽象的而对象时具体的。对象是类的一个实例。比如狗这就是一个类。二进制(我家的狗)就是一个对象,它是属于类中的一个实例。另外。我家的狗是具有属性的。name:二进制,age:2岁。这些都是他的属性。另外他还有一些行为比如 大声叫、睡觉。这也就对应着对象里面的方法。

public class Dog {
    
    
   String name;
   int age;
   void sleep(){
    
    
       System.out.println("我睡觉了");
   }
   void bark(){
    
    
       System.out.println("我叫了");
   }
}

上面的代码就是定义了一个类,类里面有类属性和行为。那么我们需要通过这个类new 一个新对象(我家的狗二进制)。

public static void main(String[] args) {
    
    
        Dog mydog = new Dog();
        mydog.name="二进制";
        mydog.age=2;
        mydog.bark();
        
    }

我们可以在类中同时创建多个对象,这也是符合现实的,狗类中不只是有我家的狗,还有你家的狗,各种名字的狗。所以说对象时某一类中的一个实例,它拥有类中定义属性那些属性和行为。

第四问:什么是类的封装性?

当我们给 mydog.age=-2 时,这时候我们如果输出年龄也是可以输出的。这是因为我们赋值了不合法的数据。这就好比我们在做火腿肠时,没有对肉进行检验,一不小心将坏的肉放入机器的,虽然也可以做出火腿肠,但是这个火腿肠是变质的。我们上面的代码是对象可以直接访问类中的属性,这在面向对象中是不合法的,所以我们往往要将类进行属性封装。

public class Dog {
    
    
   private  String name;
   private int age;
   void sleep(){
    
    
       System.out.println("我睡觉了");
   }
   void bark(){
    
    
       System.out.println("我叫了");
   }
}
public static void main(String[] args) {
    
    
        Dog mydog = new Dog();
        mydog.name="二进制";
        mydog.age=2;
        mydog.bark();

    }

这时候如果再执行程序就会报错,大家看出有什么不同了吗?在name和age属性前面加了private关键字。这个关键字的意义就是保证对象无法直接去访问类中的属性。那么我们在程序设计时应该怎么解决这一矛盾呢?那么就需要set和get方法来解决了。请看一下下面的例子

public class Dog {
    
    
   private  String name;
   private int age;
   void sleep(){
    
    
       System.out.println("我睡觉了");
   }
   void bark(){
    
    
       System.out.println("我叫了");
   }

    public void setName(String str) {
    
    
        name = str;
    }
    public void setAge(int dogeage){
    
    
       if(dogeage>=0){
    
    
           age=dogeage;
       }
    }

    public String getName() {
    
    
        return name;
    }

    public int getAge() {
    
    
        return age;
    }
}

public static void main(String[] args) {
    
    
        Dog mydog = new Dog();
        mydog.setName("二进制");
        String mydogname=mydog.getName();
        System.out.println(mydogname);
        mydog.bark();
        mydog.setAge(2);
        System.out.println(mydog.getAge());
    }

这个时候代码就可以执行,输出名字和年龄。我们还在age赋值时设置了判断语句,不满足条件时则不能赋值成功,就好比我们在机器门口设置了一个检验器检验原料是否合格。
如果我们将类里的方法private的话,那么这个方法也只能在类里被访问了。比如我们之前定义的bark();

第五问:类和类之间都有什么关系呢?

继承:顾名思义,子类可以继承父类的属性,但是不能继承私有属性,带有关键字private的属性以及方法。那么怎么继承呢?

 public static class Person{
    
    
        String name;
        int age;
        void numprint(){
    
    
            System.out.println(123);
        }
    }
    public  static  class Student extends Person{
    
    
        String school;
    }
    public static void main(String[] args) {
    
    
        Student yellow = new Student();
        yellow.name="小王";
        System.out.println(yellow.name);
    }

上面的代码表示了继承的含义,学生是人的一个子类,学生可以继承父类的属性,然后也可以定义自己类的属性,就比如, Person含有姓名和年龄两个属性,学生类继承了该类的属性之后,可以再定义自己的属性,学校。这样学生类就有了姓名,年龄,学校三个属性了。
第六问:有没有专门用来继承的类呢?
抽象类:java中创建一种类专门用来当做父类,这种类称为抽象类。抽象类的作用类似模板,其目的是要设计者根据它的格式来修改并创建新的类,抽象类不可以直接创建对象,可以通过抽象类来派生出新的类,再由它来创建对象。
抽象类规则:

  • 抽象类和抽象方法都必须用abstract关键字来修饰
  • 不能被实例化,不能new一个新对象
  • 只需声明不需实现
  • 含有抽象方法的类必须被声明为抽象类,抽象类的子类必须复写所有的抽象方法才能被实例化,否则这个子类还是抽象类。
abstract static class Person{
    
    
        String name;
        int age;
    }
    public static class  Stu extends Person {
    
    
        String school;
    }
    public static void main(String[] args) {
    
    
       Stu wang = new Stu();
       wang.name="小王";
        System.out.println(wang.name);
    }

第六问:对象多态性是啥子意思?

多态是同一个行为具有多个不同表现形式或形态的能力。
多态就是同一个接口,使用不同的实例而执行不同操作
在这里插入图片描述
参考:https://www.runoob.com/java/java-polymorphism.html
《java编程思想》

猜你喜欢

转载自blog.csdn.net/tan45du_yuan/article/details/108571897