1.4 abstract class抽象类
声明抽象类,使用关键字abstract
//内部匿名类
Db db = new Db(){
};
3.了解抽象类 抽象方法
AbstractClassMain.java
/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.practice2;
/**
 * <p>Description:</p>
 * <p>Class:</p>
 * <p>Powered by zxy On 2023/5/15 21:57 </p>
 *
 * @author zxy [zxy06291@163.com]
 * @version 1.0
 * @since 17
 */
public class AbstractClassMain {
    public cn.practice2.AbstractClass getAbstractClass() {
        return abstractClass;
    }
    public void setAbstractClass(cn.practice2.AbstractClass abstractClass) {
        this.abstractClass = abstractClass;
    }
    public AbstractClassMain(cn.practice2.AbstractClass abstractClass){
        this.abstractClass = abstractClass;
    }
    private cn.practice2.AbstractClass abstractClass;
    public void connect(cn.practice2.AbstractClass abstractClass){
        abstractClass.connection();
    }
    public static void main(String[] args) {
        AbstractClass d1 = new cn.practice2.AbstractClassMySQL();
        AbstractClassMain dm = new AbstractClassMain(d1);
        //dm.connect(d1);
        dm.connect(new AbstractClassMySQL());
        dm.connect(new AbstractClassOracle());
    }
}
AbstractClassMySQL.java
/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.practice2;
/**
 * <p>Description:</p>
 * <p>Class:</p>
 * <p>Powered by zxy On 2023/5/15 21:59 </p>
 *
 * @author zxy [zxy06291@163.com]
 * @version 1.0
 * @since 17
 */
public class AbstractClassMySQL extends AbstractClass{
    @Override
    public void connection() {
        System.out.println("张三...MySQL conn...");
    }
}
AbstractClassOracle.java
/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.practice2;
/**
 * <p>Description:</p>
 * <p>Class:</p>
 * <p>Powered by zxy On 2023/5/15 22:00 </p>
 *
 * @author zxy [zxy06291@163.com]
 * @version 1.0
 * @since 17
 */
public class AbstractClassOracle  extends AbstractClass{
    @Override
    public void connection() {
        System.out.println("李四...  Oracle conn...");
    }
}

AbstractClass.java
/*
 * Copyright (c) 2017, 2023, zxy.cn All rights reserved.
 *
 */
package cn.practice2;
/**
 * <p>Description:</p>
 * <p>Class:</p>
 * <p>Powered by zxy On 2023/5/15 22:01 </p>
 *
 * @author zxy [zxy06291@163.com]
 * @version 1.0
 * @since 17
 */
public abstract class AbstractClass {
    //抽象方法
    public abstract void connection();
    public  int square(int i){
        return i*i;
    }
    //   public int sum(int a, int b){
    //       this.a = a;
    //       this.b = b;
    //       return a+b;
    //   }
    //   public static void main(String[] args) {
    //   }
}
抽象类:1、抽象类声明时abstract class 类名{}
2、抽象类不能直接实例化,使用抽象类的子类
3、抽象类是可以有抽象方法 abstract void show(); 没有方法体
4、A a = new B();声明B类时继承了A类,A是父类,B是子类
5、抽象方法是不能私有的private修饰
6、有抽象方法的类必须为抽象类,抽象类可有抽象方法、没有抽象方法,也可有普通方
InputStream is = new FileInputStream();
InputStream 是抽象类,FileInputStream类是继承的子类
 类 = 静态段 初始化段 属性 方法 class 类名{}
抽象类 = 静态段 初始化段 属性 方法 [抽象方法] abstract class 类名{}
7、抽象更像一种编程规范,一般是项目经理,架构师编写的多。
4.掌握extends final abstract super this 关键字使用
问题讲解
User.builder().name().age().address();
@Builder
所有子类都会执行super()
1.构造方法
-  没有返回值,不能使用void 
-  不能是static 
-  方法名称必须和类名一致 
-  如果编写类时没有写构造方法,编译器自动为class类文件添加一个无参构造方法 -  public Xxx(){ super(); }
 
-  
-  如果编写构造方法,编译器不在添加无参构造,建议最好自己编写一个无参空构造方法 
-  构造方法,不能通过对象调用,只能new的时候自动调用相关的构造方法。 
-  构造方法中第一行,永远是调用父类构造器 -  //super(); super(1,3);
 
-  
blic Xxx(){
 super();
 }
 ```
-  如果编写构造方法,编译器不在添加无参构造,建议最好自己编写一个无参空构造方法 
-  构造方法,不能通过对象调用,只能new的时候自动调用相关的构造方法。 
-  构造方法中第一行,永远是调用父类构造器 -  //super(); super(1,3);
 
-  



















