黑马程序员————java中的抽象类

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

  抽象类集中的体现了java面向对象的特性,对于每一种事物通过五个方面:属性,方法,构造器,代码块,内部类,来重新解构再进行组装,然后将类似的事物归为一类,这是面向对象的思想。java中常说万物皆对象,那么很显然我们可以进一步的将其中的方法拿出来作为对象研究,也就是进一步抽取其功能,生成鼻祖,通过子类继承父来调用类似功能。由于经abstract修饰的类是无法创建对象的,经abstract修饰的方法也是没有任何意义的,所以,子类必须要重写父类的抽象方法。

abstract class Animal{
	abstract void sing();
	abstract void show();
}
class Cat extends Animal{
	void sing(){
		System.out.println("喵喵唱歌");
	}
	void show(){

	}
}
class Dog extends Animal{
	void sing(){
		System.out.println("汪汪唱歌");
	}
	void show(){

	}
}
public class A6_58{
	public static void main(String[] args){
		Animal t=new Cat();
		t.sing();
	}
}

  

对于abstract,当修饰类时,此类为抽象类,类中成员方法分三种情况:1.可以全为抽象方法,此类无法创建对象,子类需要复写父类中所有的抽象方法才能通过创建子类对象调用其方法

abstract class cx{
            abstract  void  function1(){//抽象方法1
                    System.out.println(“我是抽象方法1”);
       }
             abstract  void   function2(){//抽象方法2
                     System.out.println("我是抽象方法2");
         }
}       

class zi extends cx{         void function1(){                   System.out.println("复写后的抽象方法1");    }         void function2(){                 System.out.println("复写后的抽象方法2");      }}

class A{     public static void main(String[] args){            zi aa =new zi;            aa.function1;//将调用复写后的方法            aa.function2;//将调用复习后的方法

}}

2.可以全为非抽象方法,此类依然无法创建对象,这种情况极少见,一般是为了不想此类创建对象才用abstract修饰

abstract class cx{
           void aa(){
                   System.out.println("我是普通方法");
       }
          void  bb(){
                   System.out.println("我也是普通方法");
      }
}

  

3.可以有抽象方法也可以有非抽象方法,无法创建对象,子类依然需要复习掉所有的抽象才能创建对象。当修饰方法是,只要该类中有抽象方法,那么该类必须定义为抽象的,正因如此,子类继承父类时如果想要创建对象必须要复写掉其中所有的抽象方法。

abstract class cx{
           void aa(){
                   System.out.println("我是普通方法");
       }
         abstract void  bb1(){
                   System.out.println("我是抽象方法1");
      }
         abstract void bb2(){
                    System.out.println("我是抽象方法2");
        }
}

class  zi{
          void bb1(){
                    System.out.println("复写抽象方法1");
        }
}

  上述这种情况就是并没有将抽象类中所有的抽象方法复写玩,那么他还是一个抽象,无法创建对象,也就无法调用方法。

时间: 2024-10-10 11:11:26

黑马程序员————java中的抽象类的相关文章

黑马程序员-java中的反射总结

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Java 反射总结 类装载器工作机制 类装载器就是寻找类的节码文件并构造出类在JVM 内部表示对象的组件.在Java 中, 类装载器把一个类装入JVM 中,要经过以下步骤: 1.装载:查找和导入Class 文件: 通过一个类的全限定名来获

黑马程序员------Java中jdk1.5新特性

Java培训.Android培训.iOS培训..Net培训.期待与您交流! JDK1.5新特性: 为什么会出现新特性: 新的技术出现是为了解决老的问题,Java语言为了提高开发者的开发效率,对之前的某些不利于提高效率的技术进行改进. 静态导入: 静态导入:可以导入某个类下的静态方法,静态导入后,可以不写类名而直接使用此类下的静态方法. 语法:import static 包名.类名.静态方法 代码示例: package com.itheima.day1; /** * 静态导入 * @author

黑马程序员------Java中多线程学习总结(一)

Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! 一.多线程的概念 进程:是一种“自包容”的运行程序,有自己的地址空间. 基于进程的特点是允许计算机同时运行两个或更多的程序 线程:是进程内部单一的一个顺序控制流 . 基于线程的多任务处理环境中,线程是最小的处理单位. 在Java中,一个应用程序可以包含多个线程.每个线程执行特定的任务,并可与其他线程并发执行.多线程使系统的空转时间减少,提高了CPU的利用率.多线程编程隐藏了CPU在任务之间切换的事实. 二.创建

黑马程序员————java中的网络编程

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- java中的网络编程 一.网络编程概述:基于互联网的编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 二.网络模型:OSI和TCP/IP 1.OSI(Open System Interconnection开放系统互连

黑马程序员------Java中GUI(图形用户界面)学习总结

Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! GUI: Graphical User Interface(图形用户接口). 即用图形的方式,来显示计算机操作的界面,以方便用户更容易更直观地操作. Java中为GUI提供的对象都在Java.Awt和Javax.Swing两个包中. java.Awt: Abstract Window ToolKit (抽象窗口工具包). 需要调用本地系统方法实现功能,属于重量级控件. javax.Swing: 在AWT的基础上

黑马程序员-Java中的基本数据类型

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- Java中的数据类型分为两个大类:基本数据类型和引用数据类型. 其中基本数据类型又可以分为四类:整型数据类型,小数数据类型,字符类型,布尔型. 整型数据类型还分为:byte,short,int(整型),long(长整型).默认为int型.

黑马程序员——Java中的面向对象

----android培训.java培训.期待与您交流! ---- 通过一段时间的学习,对于面向对象有了更深刻的了解,面向对象是将复杂的事情简单化,面向对象的思想更能全面详细的想到问题的关键,下面是对面向对象的一些总结: 面向对象:将功能封装进对象,强调具备了功能的对象 特点: 1:将复杂的事情简单化.                2:面向对象将以前的过程中的执行者,变成了指挥者.                3:面向对象这种思想是符合现在人们思考习惯的一种思想. 面向过程是执行者   , 

黑马程序员------Java中多线程学习总结(二)

Java培训.Android培训.iOS培训..Net培训,期待您的交流 在Java多线程中,如果有多个线程同时操作共享数据时,就可能会发生数据异常 如下面这段代码: /* * 模拟卖票 */ class Ticket implements Runnable { private int tick = 10; Object obj = new Object(); public void run() { while(true) { if(tick>0) { try{Thread.sleep(10);

黑马程序员--Java中的反射逻辑

------- <a href="http://www.itheima.com" target="blank">android培训</a>.<a href="http://www.itheima.com" target="blank">java培训</a>.期待与您交流! ---------- 1 .      反射是在运行状态中,对于任意一个类(class文件),都能够知道这个