java面向对象的几个基本特征

面向对象的特点:
1:继承
特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。例如,轮船、客轮;人、大人。一个类可以是多个一般类的特殊类,它从多个一般类中继承了属性与服务,这称为多继承。例如,客轮是轮船和客运工具的特殊类。在java语言中,通常我们称一般类为父类(superclass,超类),特殊类为子类(subclass)。但我们要注意java语言是不支持多继承的,它对多继承的实现是通过接口来进行的。

子类继承父类的:大部分成员变量和大部分成员方法(不包括私有变量和私有方法)

2:抽象类和抽象方法
类中有一个abstract修饰符(但要注意只要有抽象方法的类就是抽象类)、父类中存在抽象方法(也可以没有)抽象方法没有方法体并且修饰符一定要是public或者protected,父类不能new出来
所有子类都必须实现这些抽象方法(如果没实现就必须把它也定义成一个抽象方法) 虽然不能new出来但是它可以有自己的static方法。
3:封装。某个类具有很多的方法,很多时候只管调用,不必了解具体实现,我们只要具体的结果这种是典型的“结果导向”
封装有两个含义

  1. 把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。
  2. 信息隐蔽,即尽可能隐蔽对象的内部细节,对外形成一个边界〔或者说形成一道屏障〕,只保留有限的对外接口使之与外部发生联系。
    封装的优点:
    封装的原则在软件上的反映是:要求使对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它的”交叉感染”,使软件错误能够局部化,大大减少查错和排错的难度。

4:接口实现多继承
在类中实现接口可以使用关键字implements
在类的继承中,只能做单重继承,而实现接口时,一次则可以实现多个接口,
每个接口间使用逗号“,”分隔。

5:多态三个条件(继承、重写、父类对象引用指向子类对象)
这里我们通过一个具体的实例来看一下多态的实现。

这里先定义一个Person类,里面有一个eat方法。

package com.mashensoft.interfacedemo;

public class Person {
public void eat(){
    System.out.println("吃饭");
}
}

这里写了两个子类,分别重写了eat方法

package com.mashensoft.interfacedemo;

public class Student extends Person {
    @Override
    public void eat() {

        System.out.println("吃便宜的饭");
    }
}

package com.mashensoft.interfacedemo;

public class Teacher extends Person{
@Override
public void eat() {

    System.out.println("吃好吃的饭");
}
}

这里写一个测试方法

package com.mashensoft.interfacedemo;

public class Person {
    public void eat() {
        System.out.println("吃饭");
    }

    public static void main(String args[]) {
        Person p1 = new Student() ;
        p1.eat();
        Person p2 = new Teacher() ;
        p2.eat();
    }
}

效果截图
这里写图片描述
这里我们可以看到虽然这只是几个非常简单的类但是,多态的特点都体现了出来继承、重写父类方法、父类对象引用指向子类对象。这里我们要注意的就是父类对象只能调用自己本身已有的定义过的方法,子类对象中另外写的方法是不能够调用的。同理这种多态也可以通过接口来实现,效果其实一样的

多态的好处:
1.可替换性(substitutability)。多态对已存在代码具有可替换性。
2.可扩充性(extensibility)。多态对代码具有可扩充性。
3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程。

你可能感兴趣的:(学生)