Java面向对象(高级篇):二

1. 抽象类

1.概述:
抽象类,什么是抽象类?顾名思义,抽象类肯定是用来描述抽象概念的类,抽象类中的方法不一定要实现具体功能。
2.特点:
1.被abstract修饰
2.抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
3.抽象类中有构造方法,但是不能被实例化
4.抽象类的子类可以是抽象类,也可以是标准类,但是标准类必须重写抽象类的方法

//我们来尝试这写一个抽象类
abstract class A{
    
    
//定义成员变量
public static final String country = "china";
private String name = "tom";

public String getName() {
    
    
        return name;
    }

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

//抽象方法
public abstract void print();
}
//我们再来写一个A类的子类
class B extends A{
    
    
public void print(){
    
    
//因为子类是普通类,所以子类必须重写抽象类的方法
System.out.println("country="+country);
System.out.println("name="+super.getName());
}
}

//我们进行一下测试
public class Test{
    
    
public ststic void main(String[] args){
    
    
B b = new B();
b.print();
}
}

结果打印如下:
在这里插入图片描述
3.成员特点:
1.成员变量:可以是变量,也可以是final修饰
2.构造方法:有构造方法是为了子类初始化父类,供子类调用
3.成员方法:抽象方法,普通方法
4.注意事项:
1.抽象类有构造方法,但是不能被实例化,作用是为了供子类调用,初始化父类数据
2.一个类没有抽象方法,也可以被定义为抽象类,目的是不让该类创建对象
3.abstract关键字与其他关键字的关系:
private:冲突
final:冲突
static:冲突且无意义

2.接口

1.概述:
java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为
2.特点:
1.接口用关键字interface修饰
interface 接口名{}
2.类实现接口用implements表示
class 类名 implements 接口名 {}
3.接口不能实例化按照多态的方式,由子类实例化,其实也是多态的一种方式,接口多态
4.接口的子类
抽象类
标准类:重写接口中所以抽象方法
3.成员特点:
接口的成员特点:
1.成员变量
默认被public static final 修饰(推荐手动打出,直观)
接口中不能有变量,只能有常量
2.构造方法:没有构造方法
3.成员方法:默认被 public abstract修饰

//我们来定义一下:

//定义一个接口:
interface Inter{
    
    
//成员变量
public int num =10;
public final int num2 = 20;

//public Inter(){}无构造方法
//public abstract void showInfo(){}
}

//接口的实现类
class InterImpl implements Inter{
    
    
    public InterImpl(){
    
    
    super();//默认Object类
    }
}
//我们测试一下:
public class Test2{
    
    
public static void main(String args[]){
    
    
Inter inter =new InterImpl();
System.out.println(inter.num);
System.out.println(inter.num2);
//inter.num = 30;接口里的成员变量默认被final修饰,不可修改
System.out.println(Inter.num);//可以通过接口调用,说明被static修饰
System.out.println(Inter.num2);
}
}

运行结果如下:
在这里插入图片描述
4.接口和类的关系:
总结:
类与类:继承关系,只能单继承,多层继承
类与接口:实现关系,类可以实现一个或多个接口
接口与接口:继承关系,可以继承一个或多个,多继承

//代码展示:
public class Test3 {
    
    
}
interface Father{
    
    

}
interface Mother{
    
    

}
interface Sister extends Father,Mother{
    
    }

class  Son implements Father,Mother{
    
    
}

5.接口和抽象类的区别:
5.1.组成区别:
抽象类:
成员变量:可以是变量也可以是常量
构造方法: 有构造方法
成员方法:可以是抽象方法也可以是非抽象方法
接口:
成员变量:无成员变量,只有常量
构造方法:没有构造方法
成员方法:只能是抽象方法
5.2.关系的区别
类与类
类与接口
接口和接口
5.3.应用区别:
抽象类定义的是继承体系中相同的属性和方法
接口定义的是类的扩展功能

猜你喜欢

转载自blog.csdn.net/zjdzka/article/details/109611375