`

用法:abstract抽象类与抽象方法的笔记

阅读更多
/*
 * abstract
 * 抽象类与抽象方法的使用
 * 1.抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类
 * 2.如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类
 * 3.没有抽象构造方法,也没有抽象静态方法
 * 4.抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用
 * */
public abstract class Base {
	//抽象类中可以没有抽象方法,但包含了抽象方法的类就必须被定义为抽象类
	public abstract void method1();
	public abstract void method2();
	public void method3(){}
	//没有抽象的构造方法
	//public abstract Base(){}
	//没有抽象的静态方法
	//static abstract void method4();
	public String var="Base";
	public Base(){
		System.out.println("父类的无参构造方法");
	}
	static void method4(){
		System.out.print("静态方法表示类所特有的功能,这种功能的实现不依赖于类的具体实例,也不依赖于它的子类。因此,当前类必须为静态方法提供实现");
	}
}

 

//如果子类没有实现父类的所有抽象方法,子类必须被定义为抽象类
public abstract class Sub1 extends Base {
	public String var="Sub1";
	public void method1() {
		System.out.println("重写父类的method1");
	}
}

 

//否则就必须实现父类的所有抽象方法
public class Sub2 extends Base {
	public String var="Sub2";
	public Sub2(){
		System.out.println("子类的无参构造方法");
	}
		public void method1() {
		System.out.println("重写父类的抽象方法method1");
	}
	public void method2() {
		System.out.println("重写父类的抽象方法method2");
	}
}

 

public class Test {
	public static void main(String[] args) {
		//抽象类不允许实例化
		//Base base=new Base();
		//抽象类中可以有非抽象的构造方法,创建子类的实例时可能调用
		//抽象类不能被实例化,但可以创建一个引用变量,其类型是一个抽象类,指向非抽象的子类实例
		Base test=new Sub2();
		//method1()是普通方法,在调用时,实行动态绑定,根据test的实例类型来执行。
		test.method1();
		//method4()是静态方法,在调用时,实行静态绑定,根据test的引用类型来执行。
		test.method4();
		//成员变量(static修饰和没有static修饰的变量),在调用时,实行静态绑定,根据test的引用类型来执行。
		System.out.println("\n测试:Test.var调用的是"+test.var+"的变量");
	}
}

 

分享到:
评论

相关推荐

    Java学习笔记---15.面向对象编程10-Java中final关键字,抽象类与接口

    好啊好啊 抽象类与接口是Java中最重要部分之一,这里用较大的篇幅来做下这部分的笔记. 1. final关键字 在Java中, 可以使用final关键字修饰类、方法以及成员变量。 (1).final标记的类不能被继承; (2).final标记...

    抽象类与接口(学习笔记)

    抽象类 什么是抽象类: 类和类之间具有共同特征,讲这些共同特征...因为抽象类是天生就用来被继承的,而final修饰的类是无法被继承的,所以final和abstract无法联合使用。 抽象类是有构造方法的。 子类继承了抽象类之

    PHP 面向对象程序设计(oop)学习笔记(一) – 抽象类、对象接口、instanceof 和契约式编程

    PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其...

    net学习笔记及其他代码应用

    声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...

    day019-io笔记和代码.rar

    输入流 abstract class InputStream:这个抽象类是表示输入字节流的所有类的超类。 * | * FileInputStream 子类:文件字节输入流 * 1. 构造方法 * FileInputStream(String name)...

    c#学习笔记——学习心得

    类修饰符:new在类声明时使用,public公共的,访问不受限,protected只能从其所在类和所在类的子类中进行访问,internal只有其所在类才能进行访问,private私有的,abstract抽象类,不能实例化,sealed密封类,不能...

    java日常学习笔记第二篇.md

    java日常学习,关于继承和多态的知识点,还有一些抽象类abstract类和方法的使用,这些是我的个人笔记,在学习过程不懂得东西,也仅供大家参考。

    php学习笔记 面向对象中[接口]与[多态性]的应用

    复制代码 代码如下: <?php /* 接口技术 * * 接口是一种特殊的抽象类,抽象类又是...接口中的所有方法必须是抽象方法,只能声明抽象方法(不用使用abstract修饰) * * 5.接口中的成员属性,只能声明常量,不能声明变量 *

    java学习笔记 初学者必读

    7.7. 抽象类 7-24 7.8. 接口 (模板方法模式) 7-25 7.9. Object 类 7-27 7.10. 封装类 7-28 7.11. 内部类 7-29 7.11.1. 内部类的分类 7-29 7.11.2. 成员内部类 7-29 7.11.3. 局部内部类 7-30 7.11.4. 静态内部类 7-30...

    Java-J2SE学习笔记

    properties属性类,super关键字,this操作,abstract抽象类,多态性,集合,接口…… java面试中长问到的一些问题及笔试题目,对于将要面试的人建议好好看一下。

    软件体系结构与设计模式课堂笔记.docx

    1.软件思想UML:UML类图符号(依赖、关联、聚合、组合、泛化)、UML类符号相互之间的区别(聚合与组合、关联和聚合、关联和依赖、泛化和实现)。 2.Sping Boot:Spring Boot环境配置、Spring Boot核心配置和注解、...

    程序员考试刷题-OCP-notes:OCP学习笔记

    关于接口的提示:接口是一种抽象数据类型,类似于定义公共抽象方法列表的类,实现该接口的任何类都必须提供这些方法。 接口还可以包括常量公共静态最终变量、默认方法和静态方法。 如果开发人员没有提供,编译器会...

    asp.net知识库

    使用Relations建立表之间的关系并却使用PagedDataSource类对DataList进行分页 通过作业,定时同步两个数据库 SQLSERVER高级注入技巧 利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在客户端自动验证输入的...

    jdbi-examples:使用JDBI作为持久性框架的一些示例

    使用抽象类时,最好执行以下操作: @RegisterMapper ( AddressMapper . class) public abstract class AddressAbstractClassJdbiDao implements AddressDao { } ... public Foo { private AddressDao addressDao ...

    整理后java开发全套达内学习笔记(含练习)

    abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n.算法 ['ælgәriðm] Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'...

    Java学习笔记-个人整理的

    {8.1}线程的常用属性与方法}{121}{section.8.1} {8.2}后台线程}{123}{section.8.2} {8.3}创建线程的两种方法}{123}{section.8.3} {8.4}Runnable}{123}{section.8.4} {8.5}Sleep阻塞与打断唤醒}{124}{section....

    谷歌师兄的leetcode刷题笔记-JavaNote:javaesguavajdkjdk8jsonlombokmdthreadjvmsprin

    抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern) 结构型模式 适配器模式(Adapter Pattern) 桥接模式(Bridge Pattern) ...

    设计模式实验报告.doc

    3 模式结构图 4 UML类图 5 代码 6运行结果 实验三 抽象工厂模式的应用 1 实验目的 1) 掌握抽象工厂模式(Abstract Factory)的特点 2) 分析具体问题,使用抽象工厂模式进行设计。 2 实验内容和要求 麦当劳...

    java7hashmap源码-network_program:学习java网络编程

    java7 hashmap源码 [toc] java网络编程学习 简介 用于存放学习java网络编程过程遇见的重难点笔记和相关代码 附带代码大部分是《java网络编程 ...这两个抽象方法是由 inputStream 和 outputStream 的具体子类实

Global site tag (gtag.js) - Google Analytics