`
lxc914_java
  • 浏览: 57472 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 抽象类基础学习

 
阅读更多
1.抽象类: 不能手动创建对象(JVM可以创建抽象类的对象),但是可以声明抽象类型的引用。

public class TestAbstract1{
public static void main(String[] args){
//Animal a=new Animal(); //error

Animal a=null;
a=new Dog();
}
}
abstract class Animal{
}
class Dog extends Animal{
}




2.抽象方法:有方法名的定义,没有实现,(只定义了能做什么,没定义怎么做)

抽象方法的好处是允许方法的定义和实现分开。
abstract class Animal{
public abstract void eat();
}



抽象类和抽象方法的关系:含有抽象方法的类一定是抽象类,抽象类里不一定含有抽象方法

抽象类存在的意义是用来被继承的。一个类继承了一个抽象类,必须实现抽象类里面所有的抽象方法,否则,此类也是抽象类。
abstract class Animal{
public void run(){}
public abstract void sleep();
public abstract void eat();
}
class Dog extends Animal{
public void sleep(){
System.out.println("Dog sleep.");
}
public void eat(){
System.out.println("Dog eat.");
}
}
abstract class Cat extends Animal{
public void eat(){
System.out.println("Cat eat.");
}
}



    可以声明父类类型子类对象,利用多态调用抽象方法
public class TestAbstract1{
public static void main(String[] args){
Animal a=null;
a=new Dog();
a.sleep();
a.eat();
}
}

    抽象类有构造方法,有父类的,也遵循单继承的规律
class E{}
abstract class Animal extends E{
public Animal(){
super();
}
}


3.多种修饰符的连用问题:

public protected default private static final abstract

可以连用:

public static

private static

public final

public static final

不可以连用:abstract final void eat();

private abstract void eat();

static abstract void eat();

abstract不能和final,private,static连用



/*abstract定义类时方法必须完整的,为什么写不完整的方法,在程序实现过程中有时只要定义规范
不要求实现,写残缺的不完整的方法,你将一个方法定义为残缺的,说明这个类也是残缺的,类前也
要加abstract*/

abstract class Person
{
//public void run();  //方法是不完整的,
public abstract void  run();
//抽象类中的实例方法必须实现,抽象方法不能进行实现。
public void add(int a,int b){
   System.out.println("woshi");
  };
}
//抽象类(abstract)只能拿来继承而不能进行实例化
class Student extends Person//子类必须覆盖父类的抽象方法
{
  public void  run(){
};
  public void add(int a,int b,int c){
   System.out.println("aaaaaaaaaaaaaa");
  };
}
/*Student 不是抽象的,并且未覆盖 Person 中的抽象方法 run(),在继承类中必须实现抽象类中的抽象方法
在抽象类Person中定义的是规则或规范,而在Student实现类类中是实现上面定义的规则和规范*/
public  class Test {
public static void main(String [] args){
  //Person p=new Person();
  //多态的表现形式==(1)重载(2)覆盖(3)子类实例赋值给父类
  //(4)子类实例可以赋值给父类的抽象类
  Person p=new Student();//可以直接用子类来进行实现,也可以用父类可以实现,但是必须上转型对象吧子类的对象赋值给父类的对象。
// Person p;
// Student q=new Student();//父类不能使用子类新增的方法
  //  p=q;
  p.add(1,0);//父类不能调用子类的新增方法,当子类重写了父类的方法是则调用子类的方法,当子类重载了父类的方法是调用父类的方法
// p.run();
    //    q.run();
//    q.add(); 
 
}
 
   
}
//如果一个类是abstract,不一定里面的方法是abstract
分享到:
评论

相关推荐

    Java 抽象类

    通过学习和熟练掌握Java抽象类,开发者能够更好地设计和组织代码,提高代码的灵活性和可维护性,是成为一名优秀Java程序员的必备技能之一。在实际开发中,合理利用抽象类和接口,可以帮助我们构建出高效、可扩展的...

    java期末复习抽象类与接口,内部类,知识点.zip

    复习时,可以详细阅读`Java抽象类.docx`来理解抽象类的定义、用途和实例化规则,通过`Java接口.docx`学习接口的定义、实现方式以及多继承的特点,`Java内部类.docx`将帮助你掌握不同类型的内部类及其应用场景。...

    java基础java基础学习java基础学习

    12. **抽象类与接口**:抽象类是不能实例化的类,用于定义通用行为;接口则是一种完全抽象的类型,只能包含常量和抽象方法。 13. **异常处理**:Java通过try-catch-finally语句块来捕获和处理运行时错误,提供更...

    Java-Java面向对象抽象类和接口实现教程

    通过学习这个Java面向对象抽象类和接口实现的视频教程,你将能够更好地理解如何在实际项目中应用这些概念,提高代码的可重用性和灵活性。在实际编程过程中,不断实践和熟悉这些面向对象设计原则,将使你的代码更加...

    编写一个抽象类Shape

    抽象类Shape被设计为一个基础类,它定义了两个抽象方法:`getArea()` 和 `getPerimeter()`,用于计算形状的面积和周长。抽象方法在Java中是没有具体实现的,它们必须由派生类来实现。 首先,我们创建了一个名为`...

    从战略角度对Java抽象类与接口的剖析.zip

    在Java编程语言中,抽象类和接口是两种重要的机制,它们用于实现代码的抽象和多态性,这对于软件设计和架构至关重要。从战略角度来看,理解并有效地利用它们能提升程序的可扩展性和维护性。本篇文章将深入探讨这两个...

    Java程序设计 基础、编程抽象与算法策略源码

    6. **编程抽象**:编程抽象是将复杂问题简化为可管理部分的过程,书中通过实例展示了如何使用接口、抽象类和设计模式来提高代码的可读性和可维护性。 7. **算法策略**:书中的一个重要部分是算法分析,包括排序、...

    Java 接口和抽象类区别

    EJB的基础涉及到Session Beans、Message Driven Beans和Entity Beans,每种类型的Bean都有特定的接口和/或抽象类定义其职责。例如,`javax.ejb.SessionBean` 是一个接口,定义了Session Bean必须实现的一些基本方法...

    java学习流程java基础语法学习

    Java学习流程Java基础语法学习 Java学习流程可以总结为四步走:构建Java开发环境、学习Java基础语法、学习面向对象编程和应用编程。 Step 1: 构建Java开发环境 要学习Java,首先需要构建Java开发环境。包括下载...

    JAVA基础类(学习基础JAVA)

    根据提供的文件信息,我们可以整理出一系列关于Java基础知识的关键知识点,涉及垃圾回收机制、异常处理、程序结构、编译与运行过程、位运算、控制语句、抽象类的概念及其使用、成员变量的特性等方面。 ### 1. Java...

    【IT十八掌徐培成】Java基础第05天-03.抽象类-抽象方法-修饰符组合.zip

    在IT领域,尤其是在Java编程语言的学习中,抽象类和抽象方法是面向对象设计的重要概念。今天我们将深入探讨这个主题,特别是在Java基础课程的第五天,讲师徐培成讲解的"抽象类-抽象方法-修饰符组合"部分。下面将详细...

    java学习路线(鱼皮)

    在Java入门阶段,学习者需要掌握Java基础语法、数据类型、流程控制、数组、面向对象、方法重载、封装、继承、多态、抽象类、接口、枚举、常用类、String、日期时间、集合类、泛型、注解、异常处理、多线程、IO流、...

    Java程序设计基础

    Java程序设计基础是编程学习的重要领域,主要涵盖了Java语言的基础概念、语法结构和特性。Java是一种全面面向对象的编程语言,由Sun公司的James Gosling等人于1990年开发,最初命名为Oak,后来因互联网的兴起而更名...

    Java基础学习源码

    "Java基础学习源码"集合了初学者在学习Java时需要掌握的关键概念和实践操作。这个压缩包包含了整个Java基础学习过程的源代码,是学习者理解和巩固Java基础知识的重要资源。 1. **基本语法**: Java的基础语法包括...

    黑马程序员:轻松精通Java学习路线基础篇!JAVA语言

    Java 学习路线基础篇!...5. 抽象类和接口:了解什么是抽象类和接口,掌握抽象类和接口的定义格式、静态初始化、动态初始化。 通过掌握这些基础知识,你将轻松精通 Java,拥有基础牢固的编程能力。

    Java语言程序设计抽象类和接口PPT教案学习.pptx

    Java语言程序设计中,抽象类和接口是两个非常重要的概念,它们都是面向对象编程的基础。在这个PPT教案中,我们将详细介绍抽象类和接口的定义、特点、应用场景以及它们之间的关系。 抽象类(Abstract Class) -----...

    java入门基础的学习工具书

    11. **接口与抽象类**:接口和抽象类是实现多态的重要方式,它们定义了类的行为规范。 12. **泛型**:泛型引入了类型参数,增强了代码的类型安全性和重用性。 13. **反射**:反射机制允许程序在运行时动态访问和...

    JAVA反射机制的入门代码

    总的来说,"JAVA反射机制的入门代码"是初学者理解Java反射机制的好教材,通过它,你可以学习如何动态地操作Java类,提高代码的灵活性,并掌握处理`properties`文件的基础方法。在深入学习和实践中,你将进一步理解...

    java基础学习笔记全集

    Java基础学习笔记全集涵盖了广泛的Java编程概念,是学习和准备Java相关笔试的理想资源。这份资料集合了J2EE框架、MVC模式、线程管理、Struts框架、MD5加密算法以及Java常用类的使用等多个核心主题。下面将对这些关键...

Global site tag (gtag.js) - Google Analytics