2、Java封装、继承与多态

/**
 * 类、对象、面向过程、面向对象的理解:
 * 1、类:类是封装对象的属性和方法的载体
 *
 * 2、对象:对象是类抽象出来的一个实例
 *
 * 3、面向过程:面向过程注重的是具体的实现过程,因果关系
 *
 * 4、面对对象:面向对象注重的是对象要完成哪些功能,独立体
 * */

/**
 * 面对对象的三大特征:封装、继承、多态
* * 1、封装:就是隐藏对象的属性和实现细节,仅对外提供公共访问方式,提高程序的维护性。 * * 2、继承:主要思想就是将子类的对象作为父类的对象来使用,提高代码复用。 * * 3、多态:父类引用变量指向子类对象。降低耦合度,提高扩展力。 *
*/

一、封装:

/**
 * 封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,提高程序的维护性
 *
 * 简单来说就是使用private来修饰变量,仅对外提供set与get方法来访问变量
 * */
class Provider{
    private Integer id;
    private String name;

    public String getName() {
        return name;
    }

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

public class EncapsulateDemo {
    public static void main(String[] args) {
        Provider provider = new Provider();
        provider.setName("zhan");
        System.out.println(provider.getName());
        //private修饰的变量或方法无法直接访问,只能在同一个包中同一个类才能直接访问
//        provider.id = 1;
//        System.out.println(provider.id);
    }

}

 

二、继承:

1、super关键字与this关键字:

/**
 * 继承:主要思想就是将子类的对象作为父类的对象来使用,提高代码复用。
 *
 * 继承的语法形式:class 子类名 extends 父类名
 *
 * Java是单继承的,一个子类只能有一个父类,可以采用嵌套继承方式
 *      clss A {}
 *      class B extends A {}
 *      class C extends B {}
 * 注:
 * 1、final关键字的类不能被继承
 *
 * */

//不得不提的super关键字与this关键字 /** * super关键字:用于访问父类内容 * 方式1、【super()】:在子类的构造方法中使用,相当于调用父类的构造方法 * 方式2、【super.】:在子类的成员方法中使用,可以调用父类的成员变量或成员方法 * * this关键字:用于访问本类中的内容 * 方式1、【this.】:表示访问本类中的成员变量或方法; * 方式2、【this()】:使用在构造方法中,表示调用本类中重载的构造方法,只能出现在构造方法第一行 * 注 :只能用在实例方法中,不能用在静态方法中 * * */ class Provider{ //父类 private Integer id; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } } //子类 class Consumer extends Provider{ //可以添加自己特有的属性 private String passWord; //无参构造 public Consumer(){ //在子类构造方法中super关键字只能出现在第一行,表示调用其父类的构造方法 super(); } public void demo(){ //调用父类成员变量 super.setId(2); } //有参构造 public Consumer(String passWord) { //表示调用本类中重载的构造方法,只能出现在第一行 this(); //表示调用本类中成员变量与方法 this.passWord = passWord; this.demo(); } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } } public class InheritDemo { public static void main(String[] args) { Consumer consumer = new Consumer(); consumer.setId(1); consumer.setPassWord("123"); System.out.println(consumer.getId()); System.out.println(consumer.getPassWord()); } }

 

三、多态:

1、接口实现与重写:

/**
 * extends:继承
 * implements:实现
 * 总结:单继承,多实现
 * (即继承,一个子类只能有一个父类;实现:一个子类可以有多个父类)
 */
/**
 * 多态:父类引用变量指向子类对象。降低耦合度,提高扩展力。
 * (一种思想方式)
 */

//接口实现
interface ProviderOne {
    public void demoOne();
}

interface ProviderTwo {
    public void demoTwo();
}

class ConsumerOne implements ProviderOne, ProviderTwo {
    @Override
    public void demoOne() {
        System.out.println("实现一");
    }
    @Override
    public void demoTwo() {
        System.out.println("实现二");
    }
}
//类继承
class ProviderThree {
    public void demoThree() {
    }
}
class ConsumerTwo extends ProviderThree{
    public void demoThree() {
        /**
         * 子类重写父类要求:
         * 1、重写的方法的权限修饰符只能更高,不能更低
         * 2、重写的方法抛出的异常只能更少不能更多
         * */
        System.out.println("重写父类方法");
    }
    public void demoFour() {
        System.out.println("子类特有方法,提高扩展力");
    }
}


public class PolymorDemo {
    public static void main(String[] args) {
        //多态是一种思想,父类引用变量指向子类对象
        ProviderOne providerOne = new ConsumerOne();
        providerOne.demoOne();

        ProviderThree providerThree = new ConsumerTwo();
        providerThree.demoThree();
        //提高扩展力
        ConsumerTwo consumerTwo = new ConsumerTwo();
        consumerTwo.demoThree();
        //子类特有方法
        consumerTwo.demoFour();


    }
}

 

 

posted on 2022-05-17 23:59  爱文(Iven)  阅读(60)  评论(0编辑  收藏  举报

导航