抽象类:

含有抽象方法的类被声明为抽象类
抽象方法由子类去实现

含有抽象方法的类必须被声明为抽象类

抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法

抽象方法:

声明而未被实现的方法

抽象类不能被实例化
子类实现不了, 由下一级子类去实现, 当前类声明为抽象类, 继承的这个方法声明为抽象方法
抽象方法的权限修饰符必须为public

abstract

//人类
public class Person {
    private String name;
    //自定义属性  引用类型 宠物
    private Pet pet;

    public Person() {

    }

    public Person(String name, Pet pet) {
        this.name = name;
        this.pet = pet;
    }

    public void petHappy() {
        pet.scream();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Pet getPet() {
        return pet;
    }

    public void setPet(Pet pet) {
        this.pet = pet;
    }
}
// 父类宠物类 抽象类
public abstract class Pet {
    private String pname;
    //抽象类可以有构造方法
    public Pet() {
    }

    public Pet(String pname) {
        this.pname = pname;
    }
    //抽象类 的抽象方法   不能有方法体
    public abstract void scream();

    public String getPname() {
        return pname;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }
}
//子类 老虎类
public class Tiger extends Pet {
    public String fur; // 毛的颜色

    public Tiger(String name, String fur) {
        super(name);
        this.fur = fur;
    }

    public Tiger() {
        super();
    }

    @Override
    public void scream() {
        System.out.println("这是一只老虎的声音 !");
    }

    public String getFur() {
        return fur;
    }

    public void setFur(String fur) {
        this.fur = fur;
    }
}
//子类 兔子类
public class Rabbit extends Pet {

    public String fur; // 毛的颜色

    public Rabbit(String name, String fur) {
        super(name);
        this.fur = fur;
    }

    public Rabbit() {
        super();
    }

    @Override
    public void scream() {
        System.out.println("兔子会卖萌 !");
    }

    public String getFur() {
        return fur;
    }

    public void setFur(String fur) {
        this.fur = fur;
    }
}
//主方法
public class Main {
    public static void main(String[] args) {
        Pet t1 = new Tiger("qqqq","www");
        Pet r1 = new Rabbit();

        Person p1 = new Person("小明", t1);
        Person p2 = new Person("小红", r1);

        p1.petHappy();
        p2.petHappy();
    }
}

接口:

一种特殊的抽象类,里面全部是由全局常量和公共的抽象方法所组成

类与类之间的实现关系

接口的实现也必须通过子类,使用关键字implements,而且接口是可以多实现的

一个类可以同时继承和实现接口

一个借口不能集成一个抽象类,但是却可以通过extends关键字同时继承多个接口,实现接口的多继承

public interface InterFaceTest1 {
    public static final String name = "hanqi";
    String pname = "tianqi";
    //接口定义的属性默认public static final
    public void testMethod();
}

一个类去实现一个接口必须实现其中的方法

继承:Java中不支持多继承,一个类只能继承一个

接口:接口可以实现多个

//接口1
public interface Inter {
    int AGE=22;//接口中的常量都是全局常量,也就是默认 public全局公共的,static静态,final不可改变的
    public abstract void tell();
}
//接口2
public interface Inter2 {
    public abstract void say();
}
//接口3
public interface Inter3 extends Inter,Inter2{
    //接口继承接口
    //一个接口不能继承一个抽象类,但可以继承多个接口,实现接口的多继承
}
//抽象类
public abstract class Chouxc {
    public abstract void write();
}
//子类
public  class Shixian extends Chouxc implements Inter,Inter2{
    public void tell(){
        System.out.println("这是类实现的接口 Inter 的抽象方法");
    }
    public void say(){
        System.out.println("这是类实现的接口 Inter2 中的抽象方法");
    }
    public void write(){
        System.err.println("这是类继承的抽象类中的抽象方法");
    }
}
//主方法
public class InterTest1 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Shixian s=new Shixian();
        s.tell();
        s.say();
        System.out.println(Inter.AGE);
        System.out.println(s.AGE);
    }
}

Java面向对象之抽象类,接口的更多相关文章

  1. 面向对象 继承 抽象类 接口 static 权限修饰符

    Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...

  2. Java面向对象作业-用接口方式测试向下转型

    Java面向对象作业-用接口方式测试向下转型 根据视频的里实例 我们直接修改Test2测试方法: package com.java1234.chap03.sec13; public class Tes ...

  3. Java面向对象之类、接口、多态

    Java面向对象之类.接口.多态 类 class Person { // 实例属性 int age; String name; // 类属性 static int v = 1; // 构造器 publ ...

  4. Java面向对象之抽象方法&接口

    在开始写抽象类之前,有一个问题我觉得想清楚会对理解抽象类很有帮助:那就是为什么要设计抽象类? 难道用类还不够么,为什么要设计出抽象类这样一个东西.我们可以换个角度来理解,就是有些类本来就是不应该被实例 ...

  5. java面向对象程序设计(下)-接口的定义

    抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更加彻底,则可以提炼出一种更加特殊的"抽象类"-接口(interface),Java9对接口进行了改进,允许在接口中定义默认方 ...

  6. Java面向对象_抽象类、接口

    一.抽象类 概   念:很多具有相同特征和行为的对象可以抽象为一个类:很多具有相同特征和行为的类可以抽象为一个抽象类 关键字:abstract 规   则:1.抽象类可以没有抽象方法,有抽象方法的类必 ...

  7. java面向对象_抽象类和接口

    一.抽象类 1.抽象方法:由abstract修饰.只有定义没有方法体.用一个分号结尾. 2.抽象类: 1)包含抽象方法的类必须是抽象类 2)由abstract修饰 3)不能被实例化 4)抽象类如果不被 ...

  8. 06 面向对象:多态&抽象类&接口&权限修饰符&内部类

    多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父 ...

  9. java面向对象(下)-抽象类

    抽象类和抽象方法 抽象类和抽象方法必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法 抽象类和抽象方法的规则如下 1.抽象类和抽象方法必须要用abstra ...

随机推荐

  1. javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  2. debian安装dwm窗口管理器

    我安装debian版本是debian-8.8.0-i386-netinst最小安装 首先去官网下载源代码 http://git.suckless.org/dwm #安装x-window环境 $sudo ...

  3. Nginx实用教程(一):启动、停止、重载配置

    Nginx是一个功能强大的web服务器和负载均衡软件,由俄罗斯人开发.Nginx包括一个master进程和数个worker进程,master进程用于读取.解析配置文件和管理worker进程,worke ...

  4. [转] .NET领域驱动设计—实践(穿过迷雾走向光明)

    阅读目录 开篇介绍 1.1示例介绍 (OnlineExamination在线考试系统介绍) 1.2分析.建模 (对真实业务进行分析.模型化) 1.2.1 用例分析 (提取系统的所有功能需求) 1.3系 ...

  5. Ipython 自动重载

    一. 使用示例 In [1]: %load_ext autoreload In [2]: %autoreload 2 # Reload all modules (except those exclud ...

  6. 门(door)

    门(door) 时间限制: 1 Sec  内存限制: 128 MB 题目描述 输入 第一行是一个正整数n,表示原始字符串的长度.第二行是一个字符串,长度为n.字符串由大小写字母,数字,符号,空格构成. ...

  7. C#开发移动应用系列(3.使用照相机扫描二维码+各种基础知识)

    前言 上篇文章地址: C#开发移动应用系列(1.环境搭建) C#开发移动应用系列(2.使用WebView搭建WebApp应用) 今天我们来讲一下如何使用Camera来调用照相机扫描二维码. (Tips ...

  8. Android 7.0 安装器安装过程分析 (com.android.packageinstaller)

    1 安装入口PackageInstallerActivity,这个类只是在安装前做准备.通过各种校验,然后弹出被安装应用的权限框,等待用户安装.具体的流程如下 1.1  求mSessionId 如果是 ...

  9. javascript中apply,call,bind区别,bind兼容等问题总结

    1 三者的相似之处: (1).都是用来改变函数的this对象的指向的 (2).都是用第一个参数来做this对象的指向 (3).都可以传参数进去 那么,具体到它们有什么区别呢?请看下面的例子: 两个对象 ...

  10. Hbase FilterList使用总结

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl/p/7098138.html 转载请注明出处 我们知道Hbase的Scan经常需要用到filter来过滤表中的数 ...