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);
-