面向对象三大特性,了解一哈!!!

说到面向对象三大特性之前,先概述一下什么是面向对象

面向对象简单来说就是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。

要注意这种思想强调的是对象,让别人帮我们干活,能帮我们干活的就称为对象.

现实世界的一类事物:                           属性:事物的状态信息。     行为:事物能够做什么。                                                      Java中用class描述事物也是如此:  成员变量:对应事物的属性   成员方法:对应事物的行为

简述后,现在来说说面向对象的三大特性.

特性一  封装

什么是封装? 封装就是使用private关键字将隐私的内容隐藏起来,不让外界直接使用

封装的原则: 1. 将隐私的内容私有 
                    2. 被private修饰后的成员变量和成员方法,只在本类中才能访问       
                    3. 提供get/set方法给别人使用

封装的好处: 提高代码的安全性

class Demo {
    // 比如定义一个妹子的属性
    String name;
    //像这个妹子的年龄不想给别人直接看到,用private私有,外界就不能直接使用了
    private int age;

    //要给外界使用提供set/get方法
    //提供设置age的方法
    public void setAge(int age) {
        this.age = age;
    }
    // 提供获取age的方法
    public int getAge() {
        return age;
    }

    //定义一个私有方法
    static private void method(){
        System.out.println("这是一个静态的私有方法");
    }
    static void method1(){
        //私有方法只有本类才能访问,外界访问不到
        method();
    }

}

特性二  继承

什么是继承?  继承就是在现有类的基础上定义一个新的类,现有类称为父类,新的类称为子类,,子类对象具有与父类相同的属性、相同的行为。子类可以直接访问父类中的非私有的属性和行为.

继承的格式
         class 类名 extends 父类名 { 

        }

 和普通类相比:在类名后面多了extends 父类名.  extends关键字表示继承.

构造方法子类不会继承
因为构造方法名和类名一致,父类和子类类名肯定不一样,所以父类的构造方法复制到子类中肯定用不了了:

什么时候使用方法重写:
子类和父类相同的功能,但是子类的功能比父类的功能更加强大,就使用方法的重写

方法重写注意事项:
        1.是子类和父类之间的事情
        2.方法名要相同
        3.参数列表要相同
        4.返回值类型要相同
        5.子类方法的权限要大于等于父类方法的权限

继承的好处:  1. 子类会自动拥有父类的内容,提高代码的复用性
                     2. 类与类之间产生了关系,是多态的前提

class Person {
    //定义父类成员变量
    String name;
    private int age;
    //无参构造和有参构造
    public Person() { }
    public Person(String name, int age) { this.name = name;this.age = age; }
    //定义成员方法
    public void eat() {System.out.println("吃饭"); }
    //提供set/get方法
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}
//定义一个子类继承Person
class Student extends Person {
    //构造方法不能被继承,类名不同
    public Student() { }
    public Student(String name, int age) { super(name, age); }
    //同名方法需要重写
    public void eat(){ System.out.println(name + getAge() + "吃不起饭"); }
}

特性三  多态

多态: 是指同一行为,具有多个不同表现形式

多态的前提:
           1 继承或者实现【二选一】
           2 方法的重写【意义体现:不重写,无意义】
           3 父类引用指向子类对象【格式体现】

多态的格式(重点): 父类引用变量指向子类对象
           父类 变量名 = new 子类(); 
           接口 变量名 = new 实现类();

多态的弊端:
当使用多态方式调用方法时,多态只能调用父类中的方法,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写 后方法

多态的好处:  
参数写父类,可以传入任意子类,多态规定,执行的是子类重写的方法,提高代码的扩展性 .

class Demo {
    public static void main(String[] args) {
        Student s = new Student();
        Teacher t = new Teacher();
        //调用方法,参数在传递过程中就使用了多态
        kaiFan(s);  //Person o = s;   Person o = new Student();
        kaiFan(t);  //Person o = t;   Person o = new Teacher();
    }
    //定义一个开饭的方法  //参数写父类,可以传入任意子类,提高代码的扩展性
    public static void kaiFan(Person o) { o.eat(); }
}
class Person {
    public void eat() { System.out.println("吃饭"); }
}
class Student extends Person {
    public void eat() { System.out.println("学生三菜一汤..."); }
}
class Teacher extends Person {
    public void eat() { System.out.println("老师酱油拌饭..."); }
}

 

 

猜你喜欢

转载自blog.csdn.net/NT_roc/article/details/81185103