JAVA学习--Abstract使用方法

* abstract:抽象的,可以用来修饰类、方法

*
 * 1.abstract修饰类:抽象类
 * 1)不可被实例化
 * 2)抽象类有构造器 (凡是类都有构造器)
 * 3)抽象方法所在的类,一定是抽象类。
 * 4)抽象类中可以没有抽象方法。
 *
 * 2.abstract修饰方法:抽象方法
 * 1)格式:没有方法体,包括{}.如:public abstract void
eat();
 *
2)抽象方法只保留方法的功能,而具体的执行,交给继承抽象类的子类,由子类重写此抽象方法。
 * 3)若子类继承抽象类,并重写了所有的抽象方法,则此类是一个"实体类",即可以实例化
 *
4)若子类继承抽象类,没有重写所有的抽象方法,意味着此类中仍有抽象方法,则此类必须声明为抽象的!
 *

 1 public class TestAbstract {
 2     public static void main(String[] args) {
 3         //Person p1 = new Person();
 4         //p1.eat();
 5
 6         Student s = new Student();
 7         s.eat();
 8
 9         Person p = new Student();//多态
10         p.eat();
11
12     }
13 }
14
15 abstract class Creator{
16     abstract void breath();
17 }
18
19 abstract class Person extends Creator{
20     String name;
21     public abstract void eat();
22     public abstract void walk();
23
24     public String getName() {
25         return name;
26     }
27     public void setName(String name) {
28         this.name = name;
29     }
30     public Person(){
31
32     }
33     public Person(String name){
34         this.name = name;
35     }
36 }
37 class Student extends Person{
38     public void eat(){
39         System.out.println("学生吃饭");
40     }
41     public void walk(){
42         System.out.println("学生走路");
43     }
44     @Override
45     void breath() {
46         System.out.println("学生不应该呼吸雾霾的空气");
47     }
48 }
49
50 abstract class Worker extends Person{
51     public void eat(){
52         System.out.println("工人吃饭");
53     }
54 //    public void walk(){
55 //        System.out.println("工人走路");
56 //    }
57 }
58
59 class Animal{
60     //不是抽象方法!
61     public void sleep(){
62
63     }
64 }
时间: 2024-10-21 20:20:41

JAVA学习--Abstract使用方法的相关文章

Java学习笔记之方法重载,动态方法调度和抽象类

一.方法重载 如果子类中的方法与它的超类中的方法有相同的方法名,则称子类中的方法重载超类中的方法,特别是当超类和子类中的方法名和参数类型都相同时,在子类中调用该方法时,超类中的方法会被隐藏.考虑下面程序: 1 class A 2 { 3 int i, j; 4 A(int a, int b) 5 { 6 i = a; 7 j = b; 8 } 9 10 // display i and j 11 void show() 12 { 13 System.out.println("i and j: &

【强烈推荐】可能是最适合你的 Java 学习路线和方法

如遇链接无法打开,建议使用 https://github.com/Snailclimb/JavaGuide/blob/master/docs/questions/java-learning-path-and-methods.md 这个链接进行阅读. 到目前为止,我觉得不管是在公众号后台.知乎还是微信上面我被问的做多的就是:"大佬,有没有 Java 学习路线和方法"(大佬属现代流行的客气称呼,本人非大佬哈).所以,这部分单独就自己的学习经历来说点自己的看法. 前言 大一的时候,我仅仅接触

JAVA学习之工厂方法模式

工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中. 核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口, 这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品. 原文链接http://tech.it168.com/a2009/0223/266/000000266400.shtml package com.fylx; //定义一个接口,人 interface People { publ

JAVA学习--接口使用方法

* 接口(interface) 是与类并行的一个概念  * 1.接口可以看做是一个特殊的抽象类.是常量与抽象方法的一个集合,不能包含变量.一般的方法.  * 2.接口是没有构造器的.  * 3.接口定义的就是一种功能.此功能可以被类所实现(implements).  * 比如:class CC extends DD implements AA  * 4.实现接口的类,必须要重写其中的所有的抽象方法,方可实例化.若没有重写所有的抽象方法,则此类仍为一个抽象类  * 5.类可以实现多个接口.----

JAVA学习--接口使用方法2(接口间的多态性)

1 //接口与具体的实现类之间也存在多态性 2 public class TestInterface { 3 4 public static void main(String[] args) { 5 Duck d = new Duck(); 6 TestInterface.test1(d); 7 TestInterface.test2(d); 8 TestInterface.test3(d); 9 } 10 11 public static void test1(Runner r){//Runn

JAVA学习--Abstract使用字段限制

//abstract 不能用来修饰属性.构造器.private.final.static public class TestAbstract1 { } abstract class A1{ //abstract int name; //因为构造器不能被重写 // public abstract A1(){ // // } //子类不能覆盖(或重写)声明为private的方法的. //private abstract void method1(); // // public abstract fi

【原】Java学习笔记008 - 方法(函数)

1 package cn.temptation; 2 3 public class Sample01 { 4 public static void main(String[] args) { 5 // 方法/函数 Method/Function 6 7 // 为什么会出现方法? 8 // 原因1.在程序中多处出现相同的语句内容 9 // 原因2.会发生变化 10 11 // [只有变化是不变的] 12 // 回顾一下变量,为了应对变化,提出的新的机制 13 // 需要对变化进行封装处理,在这里就

Java学习笔记之方法重载

被重载的方法必须具有不同的参数列表.不能基于不同修饰符或返回值类型来重载方法. package welcome; public class TestMethodOverloading { public static void main(String[] args) { System.out.println("The maximum between 3 and 4 is " + max(3, 4)); // 调用max(int, int)方法 System.out.println(&qu

JAVA学习--ArrayList使用方法:List的主要实现类

* List中相对于Collection,新增加的方法      *  void add(int index, Object ele):在指定的索引位置index添加元素ele         boolean addAll(int index, Collection eles)         Object get(int index):获取指定索引的元素         Object remove(int index):删除指定索引位置的元素         Object set(int in