面向对象

什么是面向对象

把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。

对象即为人对各种具体物体抽象后的一个概念,人们每天都要接触各种各样的对象,如手机就是一个对象。

面向对象编程(OOP: object-oriented programming),面向对象三个重点封装、继承、多态

封装

简单说就是不让其他类直接操作本类的某些属性和方法。也就是被private修饰的属性和方法在其他类中不可被使用,如果需要使用就创建一个可以被访问的方法来操作他们。

比如我们定义一个变量,如下。那么我们在其他类中无法操作这个属性,

private	 String name;

但是我们又要操作这个属性,那么我们可以设置一个方法来对这个属性操作。

public void setName(String name){
	this.name=name
}
public String getName(){
    return this.name;
}

通过上面的两个方法,我们可以在其他类中对这个属性经行设置值和读取值。

继承

继承就是一个类继承了另外一个类的所有东西。也就是父类的属性和方法子类都有,父类的属性和方法在子类中可以直接调用。

在子类中我们可以使用super关键字获取父类的一切,比如方法、属性、构造函数等。

我们可以重写父类的方法,方法重写规则就是和父类的方法名称一致即可,如果重写了父类的方法,我们还可以继续让父类的方法存在我们的子类中,使用super关键字即可。

Java中的继承是单继承也就是一类只能继承一个父类,也就一个儿子只有一个父亲。

多态

多态的实现是基于继承的关系上实现的,比如动物类,那么猫类、狗类都是属性动物类都有动物的特性,但是他们又有自己的特点。

创建动物类

public class Animal {
    public void say(){
        System.out.println("我会说话哦");
    }
    public  void sleep(){
        System.out.println("我会睡觉");
    }

}

创建Cat类

public class Cat extends Animal{
    public void eat(){
        System.out.println(" The cat to eat");
    }
}

创建Dog类

public class Dog extends Animal{
    public void call(){
        System.out.println("Dog is call ");
    }
}

1.子类的类型可以是父类,不需要转换如:

public class Test {
    public static void main(String[] args) {
         Animal cat = new Cat();//类型为父类
         Cat cat1 = new Cat();//类为子类
         Animal dog = new Dog();//类型为父类
         Dog dog1 = new Dog();//类为子类
    }
}

2.创建子类,但类型为父类,那么不能操作子类的东西。

public class Test {
    public static void main(String[] args) {
         Animal cat = new Cat();//类型为父类
         Cat cat1 = new Cat();//类为子类
        //如果引用类型名的类型为父类,那么不能操作本类的一切
      //  cat.eat();//编译会报错,找不到方法
        

    }
}

3.创建子类,但类型为父类,那么不能操作子类的东西,如果非要操作也是可以的,那就类型转换。

public class Test {
    public static void main(String[] args) {
         Animal cat = new Cat();//类型为父类
         Cat cat1 = new Cat();//类为子类
        //如果引用类型名的类型为父类,那么不能操作本类的一切
        ((Cat) cat).eat();//把父类类型变为子类类型

    }
}

JAVA面向对象动态 java如何实现面向对象_封装


JAVA面向对象动态 java如何实现面向对象_java_02