(面向对象第三章已经总结完了,下一章我们将结束面向对象的学习)
17.final
1.被final修饰的变量不可以被改变,又称为常量
2.被final修饰的方法不可以被重写
3.被final修饰的类不可以被继承
final总结就是不可变
package www.scy.cn;
public final class ZuanShi(){//被final修饰的类不可以被继承
public final void mai(){//添加final
System.out.println("我要买钻石");
}
final int a = 10;//添加final
public static void main(String []args){
ZuanShi zs = new ZuanShi();
//zs.a = 20;添加final的变量不可以被改变,也成为常量
}
}
package www.scy.cn;
public class BaoGeLi extends ZuanShi{
//public final void mai(){被final修饰的方法不可以被重写
//System.out.println("我要买钻石");
//}
}
18.抽象
抽象:现实中不存在的东西
在Java中:只声明,不实现
抽象方法:使用abstract来修饰,不可以有方法体,直接用分号(;)结束即可
抽象类:如果一个类中有抽象方法,这个类必须是一个抽象类
特点:
1.抽象类不可以创建对象
2.抽象类的子类,必须重写父类中的抽象方法,否则,子类也是抽象类
通过抽象类可以强制的要求子类中必须有哪些方法
小知识点:抽象类中可以有正常的方法
package www;
public abstract class Animal {
public abstract void eat();
public abstract void dong();
public void smell(){
System.out.println("我在smell");
}
}
package www;
public class Cat extends Animal{
public void eat() {
System.out.println("小猫吃鱼");
}
public void dong() {
System.out.println("小猫爬树");
}
}
class Test{
public static void main(String[] args) {
Animal c = new Cat();//这里是多态性
c.dong();
c.eat();
c.smell();
}
}
19.接口
①.接口实际上是一种特殊的抽象类
②.接口中所有的方法都是抽象方法,不可以有正常的方法。
③.接口使用interface来声明
④.类只能单继承,接口支持多实现,
⑤.接口同样具有多态性,
⑥.接口可以把很多不相关的内容进行整合.
特点:
1.接口中所有的方法都是抽象方法,都是公开的
2.接口中所有的变量都是全局静态常量
/**
能继承接口的只能是接口
接口和类只能是实现关系 implements
*/
public interface valuble{//接口使用interface来声明,已经不再是类了
//.接口中所有的方法都是抽象方法,可以省略abstract,
//接口中所有的内容都是公开的公共的
void getMoney();//接口中所有的方法都是抽象方法,不可以有正常的方法。
}
public class Gold implements valuble{
//必须实现抽象方法
public void getMoney(){
System.out.println("黄金可以换钱");
}
}
public class Test{
public static void main(String[] args){
Gold g = new Gold();//接口一样具有多态性
}
}
小练习:
使用前面所学内容进行练习数据库的增删改查。
package com.oop.practice3;
public interface IDAO {
void connect();
void add();
void del();
void upd();
void sel();
}
package com.oop.practice3;
public abstract class AbstractDao implements IDAO {
//void coo
@Override
public void add() {
System.out.println("增加");
}
@Override
public void del() {
System.out.println("删除");
}
@Override
public void upd() {
System.out.println("修改");
}
@Override
public void sel() {
System.out.println("查询");
}
}
package com.oop.practice3;
public class MySqlDao extends AbstractDao{
@Override
public void connect() {
System.out.println("mysql的链接。。。");
}
}
package com.oop.practice3;
public class OracleDao extends AbstractDao{
@Override
public void connect() {
System.out.println("链接oracle");
}
}
package com.oop.practice3;
import java.util.Scanner;
public class client {
public static void main(String[] args) {
System.out.println("请问您要连接那个数据库(1,Mysql,2,Oracle)");
Scanner scn = new Scanner(System.in);
int n = scn.nextInt();
IDAO dao;
if (n == 1){
dao = new MySqlDao();
}else{
dao = new OracleDao();
}
dao.connect();
dao.add();
dao.del();
dao.upd();
dao.sel();
}
}