面向对象怎样理解?

2020-05-22  本文已影响0人  程序员大大

面向对象(一)

1.什么是面向对象

1.1语言的分类

1.2面向对象和面向过程的区别

1:面向过程

针对小问题的时候,面向过程可以很简单的解决问题,事情复杂的时候面向过程就显得力不从心。面向过程是微观上解决问题的方式。

比如:领导出游,司机开车。

这些问题都是面向过程解决的问题。

2:面向对象

面向对象是解决事情的另外一种方式,针对小问题的时候有点大才小用,问题复杂的时候就显得很轻松。面向对象是宏观上解决问题的方式。

比如:领导出游,司机开车。

3:区别和联系

面向对象和面向过程是相互依存的,人们思考问题是用面向对象的思维,最终去实现还是用面向过程。

在编码的过程中,存在一个需求,我们应先从宏观上去思考这个需求,再从微观上去解决问题。

人开门这个需求,人和门都是对象,要实现这个需求只需要人去调用开门这个功能即可。

1.3对象

1:什么是对象

女朋友是对象,茶杯是对象,电脑是对象(万物皆对象)

对象对完提供了很多功能,我们无需一一详细了解他们是怎么实现的,我们只需要学会使用即可。

2:如何产生对象

现实生活中,找对女朋友很重要。

唯一见过的只有类和方法。唯一可以肯定的就是类一定和对象有关系。

3:类和对象的关系

类:鸟类,人类,鱼类

多个事物具有相同的特征,就将其归为一类。一个类中存在很多事物。这些都是老祖先为了让我们更好的认识这个世界,将很多具象事物归为一类。

对象:是一个具象事物。比如:大象,洗衣机,电视。

类中存在许多对象,一个类相当于有相同特征或者行为的对象的集合。

在java语言中类和对象的关系

类:class修饰的 一个类可以产生很多个对象。

对象:基于类的一个实例化的表现形式。

类的产生是依赖于对象的,类是将对象中相同特征或者是行为抽取出来归为一类;

对象的产生是依赖于类的,如果没有类是无法产生该类的对象的,该类的实例。

类是对于对象的抽像(抽取像的部分),对象是类的具象化的表现形式。

2.如何编写类和对象

2.1如何编写类

类是为了产生对象的,对象是为了帮我们实现某一具体事务,对象对于使用者而言,能够列出的有:

package com.mage.testww;

public class Person {
    String name="zs";
    int age=18;
    char gender='男';
    
    public void eat() {
        System.out.println("开始吃饭了");
    }
    public void sleep() {
        System.out.println("睡觉了");
    }
}

2.2如何编写对象

java中通过new关键词来产生当前类的一个具体的实例、对象。

package com.mage.testww;

public class PersonTest {
    public static void main(String[] args) {
        Person zs=new Person();
        zs.eat();
        int age=zs.age;
        System.out.println(age);
                
    }
}

2.3new关键字的作用

3.构造器

构造器就是在java代码中用来产生对象的特殊方法。将该方法称之为该类的一个构造器。

3.1构造器的注意事项

1.构造器的声明
2.构造器注意事项

3.2 this关键词

this关键词有两种用法:this.和this()

this.

代表是当前对象的,谁在调用谁就是当前对象

this大多数时候是可以省略的(出现了同名变量的时候,则不可以省略)。

this()

4.static

static称为静态的,共享的。

1.在static中使用非static修饰的

public class StaticTest {
    static int num = 10;
    public static void main(String[] args) {
        System.out.println(num);
    }
}

不建议使用

public class StaticTest { 

    int num = 10; 

    public static void main(String[] args) { 

        StaticTest t = new StaticTest(); 

        System.out.println(t.num); 

    } 

}

创建当前类的对象,通过对象=方式访问非静态内容。

在非static中使用static修饰的

public class StaticTest { 

    static int num = 10; 

    public static void main(String[] args) { 

        StaticTest t = new StaticTest(); 
    
        t.method(); 

}

    public void method() { 

        System.out.println(num); 

    } 

} 

在一个类中非静态内容访问静态内容直接通过变量名或者是方法名称就可以访问了。

public class Test02 { 

    public static void main(String[] args) { 

        System.out.println(StaticTest.num); 

    } 

} 

在其他类中访问静态内容可以直接通过类名.方法名/变量名直接访问。

静态内容在其他类中访问时可以通过类名直接 . ,也可以通过对象 . (不推荐使用)

2.static的注意事项

5.继承

5.1继承

继承就是子承父业,描述类和类之间的关系,编写类时,我们发现类和类之间可以存在父子关系的,通过extends来继承,子类extends父类。

package com.mage.Extends;

public class Animal {
    String name;
    int age;
    
    public Animal() {
        
    }
    
    public void run() {
        System.out.println("我要跑步了");
    }
}


package com.mage.Extends;

public class Dog extends Animal {
    String color;
    
    public Dog() {
        
    }
    
    public void shout() {
        System.out.println(this.color+","+this.name+","+this.age+"汪汪");
    }
}

java中,一旦发生了继承关系,子类就会拥有父类的方法和属性,无需再次去声明,达到了代码的复用性。

java中一个类只有一次继承机会,如果不能完全确定,最好不要轻易使用。

5.2内存分析

5.3方法的重写

当子类继承父类之后,不满足父类提供的功能,子类对于父类的一些方法可以重写,对于父类的一些行为进行拓展。

重写的前提:

public class Person {
    String name;
    int age;
    
    public Person() {
        System.out.println("我是父类构造器");
    }
    
    public int info(int num) {
        System.out.println("姓名:"+this.name+"年龄:"+this.age);
        return 2;
    }
}
public class Student extends Person{
    int id;
    
    public Student() {
        System.out.println("我是子类构造器");
    }
    
    @Override
    public int info(int num) {
        System.out.println("姓名:"+name+"年龄:"+age+"学号"+id);
        return 2;
    }
}
public class Test {
    public static void main(String[] args) {
        Student stu=new Student();
        stu.age=18;
        stu.id=01;
        stu.name="marry";
        stu.info(2);
    }
}

如何判断父子关系下的两个方法是否重写,在子方法的同名方法前面加一个@Override,不报错就是发生了重写。

QQ图片20191015192704.png

调用子类对象的功能以及属性的时候,先在当前本类对象中进行查找,如果找到了则执行,如果没

有找到去父类中进行查找。沿着继承链会一直往上找。

5.4 object

object是根基类,是所有类的父亲。java中的类如果没有明确继承关系,那么他的父类都是object。

i、常见方法

ii.重要方法

toString():
equals():

比较对象是否相等

上一篇 下一篇

猜你喜欢

热点阅读