抽象类、接口、工厂模式(简单工厂)

抽象类:

            不可以直接创建抽象类对象

            抽象类也是一个普通

            抽象类中也不是全部都是抽象方法

            普通抽象类:

                               里面有抽象方法也有普通方法

            纯抽象类:

                               类中全部都是抽象方法

            Java 单一继承,所以抽象类用处不大


抽象类的好处就是约束:

                                   在原来代码中你重不重写继承代码都无所谓(结构有点乱)

                                   但是如果你加了抽象类如果你想继承我的抽象类就必须重写


public abstract class T1 {
    public abstract void a();

    public abstract void b();
}
——————————————————————————————————————————
public class T2 extends T1 {
    @Override
    public void a() {

    }

    @Override
    public void b() {

    }
}

接口:
         继承一个类,实现多个接口

public class T2 extends T1 implements T3{
 //或许有需要一个类的代码、并且实现接口的需求   
   @Override
    public void a() {

    }

    @Override
    public void b() {

    }
}

        接口的魅力:

                           只做规则不做实现、自己做实现结构不会乱

        接口从底层了解 就是一个纯抽象类:

                           里面只有方法的声明,绝对没有方法的实现

        万事万物皆接口

        声明了接口就应该面向接口编程,你声明了接口,就一定要用接口做类型,创建子类对象

        注意:

                           接口中的方法全部都是public的

                           接口中申请属性,立即变成常量

       接口之间可以多继承

       

举例:首先申请3个借口A B C 用T1来实现
—————————————————————————————
public interface A {
    public void a();
}
————————————————————————————
public interface B {
    public void b();
}
—————————————————————————————
public interface C extends A ,B{
}
—————————————————————————————
public class T1 implements C {
//T1实现了A B C接口但因为C继承AB所以事先了a b方法
    @Override
    public void a() {

    }

    @Override
    public void b() {

    }
}


       接口不可以继承抽象类

       抽象类可以实现接口,也可以吧接口的方法转成抽象方法                          


public abstract class T1 implements C {//抽象类可以实现接口但他不会督促你实现方法
    @Override//就是你不实现方法也没关系
    public  void a() {
        
    }

    @Override
    public void b() {
        
    }
}

       接口中申请静态方法:
                                       可以申请静态方法

                                       可以申请default方法

                                        可以申请私有方法

       重要提醒:声明了接口,就必须面向接口编程      接口类型   s=new  子类()


public interface T1 {
public void X();
}
————————————————————————————————
public class T5 implements T1 {//首先申请接口就是面向父类编程
    public static void main(String[] args) {
        T1 t1 = new T5();//这里之所以用T1声明 创建T5是因为子类转换父类是自动转换的
        t1.X();
    }

    @Override
    public void X() {
        System.out.println("嘻嘻哈哈");
    }
}

设计模式:简单工厂:

                            工厂方法的入门模式

                            创建型设计模式、创建对象    

                            工厂模式,将对象创建隐藏起来,不给你看到子类


public interface T1 {//首先需要申请一个接口因为是面向接口编程
    public void t1();
}
——————————————————————————————————
public class T2 implements T1 {//第一个实现类
    @Override
    public void t1() {
        System.out.println("t2");
    }
}
——————————————————————————————
public class T3 implements  T1 {//第二个实现类
    @Override
    public void t1() {
        System.out.println("t3");
    }
}
——————————————————————————————
public class GongChang {
    public static T1 gc(String a) {//通过这里传入参数选择创建对象
        if (a.equals("T2")) {//通过参数对比来选择创建的对象
            T1 t1 = new T2();
            return t1;
        } else if (a.equals("T3")) {
            T1 t2 = new T3();
            return t2;
        }
        return null;//如果没有就选择空
    }

    public static void main(String[] args) {
        T1 t1=gc("T2");//以接口类为对象类型,因为接口是在面向父类编程,
        t1.t1();
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值