该文章是观看https://www.bilibili.com/video/BV1ct411n7oG?p=103后的学习笔记。
先看抽象类的实例代码:
//1.有抽象方法的类只能定义为抽象类
abstract class People{
//2.抽象类可以包含属性、方法和构造方法,但构造方法不能直接new实例,只能被子类调用
protected String name;
public void SayHello(){
System.out.println("你好!!!");
}
public People(String name) {
this.name = name;
}
//3.抽象类定义的抽象方法没有实现
abstract public void Rest();
public static void main(String[] args) {
People people = new Student("WEN");
people.Rest();
}
}
//4.抽象类只能用来被继承
class Student extends People {
public Student(String name) {
super(name);
}
//5.子类必须实现该抽象方法
public void Rest(){
System.out.println(this.name+"利用休息的事件看书");
}
}
程序运行结果:
抽象类的关键点:
1.有抽象方法的类只能定义为抽象类。
2.抽象类可以包含属性、方法和构造方法,但构造方法不能直接new实例,只能被子类调用。
3.抽象类定义的抽象方法没有实现。
4.抽象类只能用来被继承。
5.子类必须实现该抽象方法
接下来看一下接口的代码,以形状的接口被正方形类继承为例:
public interface Shape {
//接口中只能定义常量,不能定义变量,里面的方法和属性默认是公共静态的
/*public static*/ int MaxWidth = 100;
/*public static*/ void perimeter();//计算周长
/*public static*/ void area();//计算面积
}
interface _2Dshape {
/*public static*/ void declare();//声明该图形是2D图形
}
class Square implements Shape,_2Dshape{
int sideWidth;
public Square(int sideWidth) {
this.sideWidth = sideWidth;
}
@Override
public void declare() {
System.out.println("正方形是平面图形");
}
@Override
public void perimeter() {
System.out.println("边长为"+this.sideWidth+"的正方形的周长为"+4*this.sideWidth);
}
@Override
public void area() {
System.out.println("边长为"+this.sideWidth+"的正方形的面积为"+this.sideWidth*this.sideWidth);
}
public static void main(String[] args) {
Shape shape = new Square(5);
shape.perimeter();
shape.area();
((Square) shape).declare();
}
}
接口知识的关键点:
1.实现类可以实现多个接口,如上面代码中的Square类同时实现了Shape类和_2Dshape类。
2.接口中只能定义常量,不能定义变量,里面的方法和属性默认是公共静态的。
3.接口中定义的方法没有实现。