Java面向对象

一、编程思想

 java是面型对象的编程语言,而面向对象又是什么呢???面向过程呢? 

面向对象和面向过程其实都是编程思路。举一个例子,做一件事:把大象放到冰箱中。做这件事的思路有两种,面向过程思路:按照步骤依次执行程序,大象放到冰箱前->冰箱门打开->大象放进去->关门,重点是做事。面向对象思路:首先区抽离出参与的对象,然后,调用对象相关方法完成执行程序需求。抽离出大象、冰箱两个对象,创建类,大象类有,大耳朵长鼻子体重,身高,跑跳走方法等等单独定义出来;冰箱类有尺寸,制冷,冰箱门开,冰箱门关等等方法。调用大象的走动作->调用冰箱的开门动作->调用大象的走动作->调用冰箱的关门动作。

这两个有什么区别呢?面向对象的方式,不仅可以做这件事,用大象和冰箱做其他事情的时候不用一步一步书写,只需对设定好的已有的方法进行调用即可,如果不够就再去补大象的方法或冰箱的方法,面向对象的思路就是高内聚低耦合(提高代码的可复用性,便于维护可扩展)。面向过程不考虑到底建什么关系,今天做大象放冰箱的事写一遍,明天做大象吃饭的事再写一遍,以后大象的事情就会重复的书写,改的话都改。

二、面向对象学习的三个路线

Java面向对象_第1张图片

 类和对象

public class Cat {
    public static void main( string[] args) {
        Cat cat = new Cat();//类的实例化,实质就是在堆内存中开辟内存空间
        //cat():实际开辟内存空间的类型
        //new:关键字--》告诉虚拟机在内存中开辟空间的标志
        //cat :具体的对象
        //Cat :具体的数据类型
    }
}

方法

1、普通方法

Java面向对象_第2张图片

//方法重载
public int add(int a,int b) {
    return a+b;
}
public Double add(Double a,Double b) {
    return a+b;
}
public Double add (Double a,int b) {
    return atb;
}
public Double add( int a,Double b) {
    return a+b;
}

2、构造方法

Java面向对象_第3张图片

public class Cat{
    public String name;
    public string sex;
    public int age;

    //构造方法
    public Cat(){}
    //重载
    public Cat(String a){}
    //初始化对象
    public Cat(String name,String sex,int age) {
        this.hame = name;
        this.sex = sex;
        this.age = age;
    }  //Cat cat = new Cat("gs","公”,1);     
}

3、this方法

Java面向对象_第4张图片

public class Cat{
    public String name;
    public String sex;
    public int age;
    
    public Cat(){
        //5.可以在构造方法中调用其他构造方法
        this("ss","公",6);
        System.out.print1n("无参");
        //7.this()在构造方法中使用必须是第一行
        //this("ss","公",6);//报错
    }
    public Cat(String name,String sex,int age) {
        //8.两个构造方法不能通过this()相互调用
        //this();//出错 会出现反复调用
        this.hame = name;
        this.sex = sex;
        this.age = age;
    }
    public String getName() {
        //3.在一个对象方法中调用另一个对象方法
        this.setName();
        return name;
    }
    public void setName(String name) {
        String sex = "sdf";
        System.out.print1n(sex);//2.哪个sex是属性还是方法中的变量?需要加this区分System.out.print1n(this.sex)
        this.name = name;
    }
    //静态方法
    public static int getCount() {
        //4.静态(类)方法中不能使用this
        String a = this.name;//报错
        this.getName();//报错
        return 10;
    }
}
-----------------------------
public class Dog {
    public static void main( String[] args) {
        //1.this代表当前对象
        Cat cat= new Cat("hh","公",1);
        System.out.print1n(cat.getName());//输出hh

        Cat cat1 = new Cat("hh1","母", 3);
        System.out.println(cat1.getName());//输出hh1
    }
}

你可能感兴趣的:(java,java,开发语言)