Java杂谈之抽象类和抽象方法

来源:互联网 发布:真实的朝鲜 知乎 编辑:程序博客网 时间:2024/06/05 03:44

一直以来,不是很了解abstract关键字的作用,最近才对其有了一些初步的认识和了解。

abstract--抽象,既可以修饰类,也可以修饰方法


以下是一些基本的认识和注意点:

1.抽象方法只有方法的声明

2.抽象方法是让子类必须实现的方法

3.抽象方法不能私有

4.抽象方法只能在抽象类中定义

5.抽象类不可以实例化对象,所以抽象类存在的意义是做父类

6.抽象类里面是可以没有抽象方法的

7.抽象类是可以有构造函数的

以下是具体的实例:

Person--父类

Student--子类

Test--测试


Person类:

package JavaAbstract;//抽象方法只有方法的声明//抽象方法是让子类必须实现的方法//抽象类不可以有对象,不可以实例化,所以抽象类存在的意义是做父类//抽象类里面是可以没有抽象方法的public abstract class Person {private String name;//抽象类是可以有构造函数的//public Person(){}public Person(String name){this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}//抽象方法不能私有//抽象方法只能在抽象类中定义public abstract String getDescription();protected abstract String getDescription(int i);}

Student类:

package JavaAbstract;public class Student extends Person {private String major;public Student(String name,String major) {super(name);this.major = major;}@Overridepublic String getDescription() {return this.getName()+"学生的专业是"+this.major;}@Overrideprotected String getDescription(int i) {// TODO Auto-generated method stubreturn null;}}class Employee extends Person{private double salary;public Employee(String name,double salary) {super(name);this.salary = salary;}@Overridepublic String getDescription() {return this.getName()+"员工的工资是" + this.salary;}@Overrideprotected String getDescription(int i) {// TODO Auto-generated method stubreturn null;}}

Test类:

package JavaAbstract;public class Test {public static void main(String[] args) {//Person p = new Person();错误,抽象类不能实例化对象Person[] p = new Person[2];p[0] = new Employee("张三",1000);p[1] = new Student("李四","软件工程");for(int i=0;i<2;i++){String d = p[i].getDescription();System.out.println(d);}}}

实验截图:




0 0
原创粉丝点击