在本周,我学习了java类的继承,抽象类,接口以及枚举,先来介绍一下它们各自的定义吧:
继承:在Java中,一个类可以通过继承另一个类来获得其属性和行为。被继承的类称为父类或超类,继承的类称为子类或派生类。在继承中,子类继承父类是要靠extends实现的,子类可以继承父类的属性和方法,并且可以添加自己的属性和方法。
抽象类:抽象类是不能被实例化的类,它可以包含抽象方法和非抽象方法。抽象方法是只有声明而没有方法体的方法,必须在子类中实现。抽象类可以提供一些通用的方法和属性,让子类去实现具体的细节。
接口:接口是一种抽象的类型,它只包含方法的声明,没有方法的实现。类通过实现接口来实现其中定义的方法。一个类可以实现多个接口,这样它就可以拥有多个接口中定义的方法。
枚举:枚举是一种特殊的数据类型,它包含固定的常量列表。枚举常量在枚举类型中是唯一的,可以用来表示一组固定的值。枚举常量通常用于表示一组相关的常量,比如星期几、颜色等。
以下是子类继承父类的代码:
//FileName:App8_2.java
class LJA{
private String name;
private int age;
public LJA() {
System.out.println("调用了Person类的无参构造方法");
}
public LJA(String name,int age) {
System.out.println("调用了Person类的有参构造方法");
this.name=name;
this.age=age;
}
public void show() {
System.out.println("姓名:"+name+" 年龄"+age);
}
}
class LJ extends LJA{
private String de;
public LJ() {
System.out.println("调用了学生类的无参构造方法Student()");
}
public LJ(String name,int age,String d) {
super(name,age);
de=d;
System.out.println("我是"+de+"x的学生");
System.out.println("调用了学生类的有参构造方法Student(name,age,dep)");
}
}
public class App8_2{
public static void main(String[]args) {
LJ s1=new LJ();
LJ s2=new LJ("李明",17,"计算机系");
s1.show();
s2.show();
}
}
为了声明一个接口,我们使用interface这个关键字,在接口中的所有方法都必须只声明方法标识,而不要去声明具体的方法体,因为具体的方法体的实现是由继承该接口的类来去实现的,因此,接口并不用管具体的实现。接口中的属性默认为Public Static Final.一个类实现这个接口必须实现这个接口中定义的所有的抽象方法。
如下所示:
//FileName:App8_12.java
import java.text.DecimalFormat;
interface IShape{
static final double pi=3.14;
abstract double s();
abstract double c();
}
class yuan2 implements IShape{
private double rr;
public yuan2(double r) {
rr=r;
}public double s() {
return pi*rr*rr;
}
public double c() {
return 2*pi*rr;
}
}
class jv2 implements IShape{
private double ww;
private double hh;
public jv2(double ww,double hh) {
this.ww=ww;
this.hh=hh;
}
public double s() {
return ww*hh;
}
public double c() {
return 2*(ww+hh);
}
}
public class App8_12{
public static void main(String[]args) {
yuan2 yu=new yuan2(5.0);
DecimalFormat df=new DecimalFormat("0.000");
System.out.print("圆面积="+df.format(yu.s()));
System.out.println("; 圆周长="+df.format(yu.c()));
jv2 j=new jv2(5.5,6.5);
System.out.print("矩形面积="+df.format(j.s()));
System.out.println("; 矩形周长="+df.format(j.c()));
}
}
综上所述,Java中的继承、抽象类、接口和枚举都是面向对象编程的重要概念,它们分别可以用来实现类之间的继承、多态和常量定义等功能。