类、抽象类、接口、对象、继承、实现等之间的关系
本文基于java来描述,c++也有很多类似的概念,大体上应该类似。
类和对象
类是java最基本的类型,对象是类的实例化
类和对象是java中最基础的概念,java所有的代码都是基于类class去写的。例如常用的主函数写法public static void main(String[] args)
,就是将此函数funtion写在了主类中,变为了一个主类的公共方法。对象是则是new出来的实例化类。在下面代码中,Hello是函数主类,person则是类的实例化。
public class Hello {
private String name;
public void setName(String name) {
this.name = name;
}
public void getName(){
System.out.println(this.name);
}
// public Hello(String name){
// this.name = name;
// }
public static void main(String[] args) {
Hello person = new Hello();
person.setName("Li Ming");
person.getName();
}
}
抽象类和接口
抽象类是用abstract
声明的类,接口是用interface
则是和类属于同一层面。
抽象类
抽象类是某些信息还不明确时,建立的类,其不能被实例化,只能用于继承。
public abstract class Thing {
private String name;
public Thing(String name){
// 构造了一个Thing
this.name = name;
}
public String getName(){
return this.name;
}
}
继承实例
public class Hello extends Thing {
private int year;
public Hello(String name){
super(name);
this.year = 8;
}
public int getYear() {
return year;
}
public static void main(String[] args) {
Hello b = new Hello("Liming");
System.out.println(b.getName()+b.getYear());
}
}
接口
- 接口使用
interface
声明,其可以理解为一个完全公开的只有结构没有内容的模具。 - 接口中的变量会被隐式的指定为 public static final 变量,接口中的方法会被隐式的指定为 public abstract。
- 抽象方法只能出现抽象类和接口中。抽象方法不能写函数内容,需要让继承或实现的类写函数内容。
- 一个类只能继承一个抽象类,却可以实现多个接口。
public interface Thing {
String word = "我是一个抽象类";
void setName(String name);
String getName();
}
实现这个接口的例子如下
public class Hello implements Thing {
private String name;
private int year;
Hello(int year){
this.year = year;
}
public int getYear() {
return year;
}
@Override
public void setName(String name) {
this.name = Thing.word+name;
}
@Override
public String getName() {
return this.name;
}
public static void main(String[] args) {
Hello a = new Hello(8);
a.setName("Hello");
System.out.println(a.getName()+a.getYear());
}
}