java面向对象抽象类的应用 java 面向对象抽象类的应用

java 的抽象类大家都知道,但是具体有什么用,为什么要用到抽象类。大家肯定有人不太明白。培训中心老师怎么教就怎么用。最近闲来无事。研究起面向对象理论。下面让我用一个例子来说明一下。java面向对象抽象类的使用方法。只是起到一个入门和抛砖引玉的作用。

定义和概念:

面向对象的概念中,所有的对象都是通过来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

下面我们具体看看抽象类的真面目。

修饰符 abstract  class  类名

上面描述的就是抽象类。

抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
比如,在一个图形编辑软件的分析设计过程中,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域并不是直接存在的,它就是一个抽象概念。而正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够 实例化的。
不能实例化那具体该怎么用呢。下面以一个简单的例子说明。
 
学生王小明去上海学习Java 这是需求
 
通过上面的内容我们知道面向对象的主体是学生(面向对象开发主要就是在需求中找到对象)方法是学习  方法实现的功能是(学生+name(王小明)+"去"+address(上海)+"学习java")
自学离不开例子,一定要找那些简单的,而且英文单词也简单的例子来进行学习(因为主要是掌握面向对象的理论,而不是学习英语)
闲言少说,开始编写代码。
 
至于用到的工具,及工具的使用,在此不做介绍,百度一下全有了。我想看这个文章的童鞋们已经熟练使用开发工具了。
通过主体分析是学生。第一眼看到学生会想到什么 人 对 我们先定义一个人的抽象类

public abstract class Person {
String name="";//即然是人肯定是要有名字的。
int age=0;//年龄

Person(String name,int age){
this.name=name;
this.age=age;
}

abstract void Study();
}

注意了:上面红色的就是抽象方法。有人会问了,这个方法怎么没有方法体。

抽象方法:在类中没有方法体的方法,就是抽象方法。

抽象类中的抽象方法必须被实现!
如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类!
抽象类中的普通方法,可以不必实现。

在上面的抽象类中我们定义一个抽象方法 学习(看来人生下来就得学习,呵呵)

下面我们定义学生这个主体类。学生类中我们多一个地址的定义。

public class Student extends Person {
String address="";//多增加一个属性地址

Student(String name,int age,String address){
  super(name,age);//如果此句不明白,请查百度。太基础的东西不讲。
  this.address=address;
}

@Override
void Study(){//实现的抽象方法
  System.out.print("学生"+name+" 要去"+address+"学习Java");
}
}

下面我们写一个测试类,测试一下

public class Test {

public static void main(String[] args) {

Person perA=new Student("王小明",38,"上海");
perA.Study();
}
}

运行后的结果

学生王小明去上海学习java

从小听单老的评书,呵呵,单老在评书中形容一个人的学武艺时如何如何的与众不同,常说的一句话就是"举一返三"。没有错。现在我们也举一返三

需求改了 程序猿张小明带着孩子去上海进行Java架构师的学习。

我们想想这句话的主体对象是什么 对了  程序猿张小明 

好我们建立一个程序猿的类 继承于人这个类 说明程序猿也是人,还是一个聪明的人。呵呵

public class Programmer extends Person {
  String child="";//增加一个孩子的属性
  String address="";

Programmer(String name,int age,String address,String child){
  super(name,age);
  this.child=child;
  this.address=address;
}

@Override
void Study(){
  System.out.print(name+"带着孩子"+child +" 要去"+address+"进行Java架构师的学习");
}
}

在上面的测试类中增加

public class Test {

public static void main(String[] args) {

Person perA=new  Programmer("张小明",38,"上海","张小小明");
perA.Study();
}
}

运行经果  张小明带着孩子张小小明 要去上海进行Java架构师的学习

是不是感觉抽象类很有用,假如不单有学生,程序猿,还有工人、明星、记者等,只需在这个抽象类的基础上增加相应的同能,而且同时可以防止黑客去直接访问抽象类,因为抽象类不可以生成对象。还能防止因为自己的马虎造成遗漏代码。

学会用抽象的面向对象思想解决问题,是作为程序员一个良好的习惯。

java 的抽象类大家都知道,但是具体有什么用,为什么要用到抽象类。大家肯定有人不太明白。培训中心老师怎么教就怎么用。最近闲来无事。研究起面向对象理论。下面让我用一个例子来说明一下。java面向对象抽象类的使用方法。只是起到一个入门和抛砖引玉的作用。

定义和概念:

面向对象的概念中,所有的对象都是通过来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

下面我们具体看看抽象类的真面目。

修饰符 abstract  class  类名

上面描述的就是抽象类。

抽象类往往用来表征对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
比如,在一个图形编辑软件的分析设计过程中,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域并不是直接存在的,它就是一个抽象概念。而正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够 实例化的。
不能实例化那具体该怎么用呢。下面以一个简单的例子说明。
 
学生王小明去上海学习Java 这是需求
 
通过上面的内容我们知道面向对象的主体是学生(面向对象开发主要就是在需求中找到对象)方法是学习  方法实现的功能是(学生+name(王小明)+"去"+address(上海)+"学习java")
自学离不开例子,一定要找那些简单的,而且英文单词也简单的例子来进行学习(因为主要是掌握面向对象的理论,而不是学习英语)
闲言少说,开始编写代码。
 
至于用到的工具,及工具的使用,在此不做介绍,百度一下全有了。我想看这个文章的童鞋们已经熟练使用开发工具了。
通过主体分析是学生。第一眼看到学生会想到什么 人 对 我们先定义一个人的抽象类

public abstract class Person {
String name="";//即然是人肯定是要有名字的。
int age=0;//年龄

Person(String name,int age){
this.name=name;
this.age=age;
}

abstract void Study();
}

注意了:上面红色的就是抽象方法。有人会问了,这个方法怎么没有方法体。

抽象方法:在类中没有方法体的方法,就是抽象方法。

抽象类中的抽象方法必须被实现!
如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类!
抽象类中的普通方法,可以不必实现。

在上面的抽象类中我们定义一个抽象方法 学习(看来人生下来就得学习,呵呵)

下面我们定义学生这个主体类。学生类中我们多一个地址的定义。

public class Student extends Person {
String address="";//多增加一个属性地址

Student(String name,int age,String address){
  super(name,age);//如果此句不明白,请查百度。太基础的东西不讲。
  this.address=address;
}

@Override
void Study(){//实现的抽象方法
  System.out.print("学生"+name+" 要去"+address+"学习Java");
}
}

下面我们写一个测试类,测试一下

public class Test {

public static void main(String[] args) {

Person perA=new Student("王小明",38,"上海");
perA.Study();
}
}

运行后的结果

学生王小明去上海学习java

从小听单老的评书,呵呵,单老在评书中形容一个人的学武艺时如何如何的与众不同,常说的一句话就是"举一返三"。没有错。现在我们也举一返三

需求改了 程序猿张小明带着孩子去上海进行Java架构师的学习。

我们想想这句话的主体对象是什么 对了  程序猿张小明 

好我们建立一个程序猿的类 继承于人这个类 说明程序猿也是人,还是一个聪明的人。呵呵

public class Programmer extends Person {
  String child="";//增加一个孩子的属性
  String address="";

Programmer(String name,int age,String address,String child){
  super(name,age);
  this.child=child;
  this.address=address;
}

@Override
void Study(){
  System.out.print(name+"带着孩子"+child +" 要去"+address+"进行Java架构师的学习");
}
}

在上面的测试类中增加

public class Test {

public static void main(String[] args) {

Person perA=new  Programmer("张小明",38,"上海","张小小明");
perA.Study();
}
}

运行经果  张小明带着孩子张小小明 要去上海进行Java架构师的学习

是不是感觉抽象类很有用,假如不单有学生,程序猿,还有工人、明星、记者等,只需在这个抽象类的基础上增加相应的同能,而且同时可以防止黑客去直接访问抽象类,因为抽象类不可以生成对象。还能防止因为自己的马虎造成遗漏代码。

学会用抽象的面向对象思想解决问题,是作为程序员一个良好的习惯。

猜你喜欢

转载自www.cnblogs.com/sunlei2018/p/10026063.html