Java面向对象之抽象类,接口
抽象类:
含有抽象方法的类被声明为抽象类
抽象方法由子类去实现
含有抽象方法的类必须被声明为抽象类
抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法
抽象方法:
声明而未被实现的方法
抽象类不能被实例化
子类实现不了, 由下一级子类去实现, 当前类声明为抽象类, 继承的这个方法声明为抽象方法
抽象方法的权限修饰符必须为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面向对象之抽象类,接口的更多相关文章
- 面向对象 继承 抽象类 接口 static 权限修饰符
Day01 面向对象 继承 抽象类 接口 static 1.匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. 2.类的继承是指在一个现有类的基础上去构建一个新的类,构建出 ...
- Java面向对象作业-用接口方式测试向下转型
Java面向对象作业-用接口方式测试向下转型 根据视频的里实例 我们直接修改Test2测试方法: package com.java1234.chap03.sec13; public class Tes ...
- Java面向对象之类、接口、多态
Java面向对象之类.接口.多态 类 class Person { // 实例属性 int age; String name; // 类属性 static int v = 1; // 构造器 publ ...
- Java面向对象之抽象方法&接口
在开始写抽象类之前,有一个问题我觉得想清楚会对理解抽象类很有帮助:那就是为什么要设计抽象类? 难道用类还不够么,为什么要设计出抽象类这样一个东西.我们可以换个角度来理解,就是有些类本来就是不应该被实例 ...
- java面向对象程序设计(下)-接口的定义
抽象类是从多个类中抽象出来的模板,如果将这种抽象进行得更加彻底,则可以提炼出一种更加特殊的"抽象类"-接口(interface),Java9对接口进行了改进,允许在接口中定义默认方 ...
- Java面向对象_抽象类、接口
一.抽象类 概 念:很多具有相同特征和行为的对象可以抽象为一个类:很多具有相同特征和行为的类可以抽象为一个抽象类 关键字:abstract 规 则:1.抽象类可以没有抽象方法,有抽象方法的类必 ...
- java面向对象_抽象类和接口
一.抽象类 1.抽象方法:由abstract修饰.只有定义没有方法体.用一个分号结尾. 2.抽象类: 1)包含抽象方法的类必须是抽象类 2)由abstract修饰 3)不能被实例化 4)抽象类如果不被 ...
- 06 面向对象:多态&抽象类&接口&权限修饰符&内部类
多态: /* 多态(polymorphic)概述 * 事物存在的多种形态 多态前提 * a:要有继承关系. * b:要有方法重写. * c:要有父类引用指向子类对象. * 成员变量 * 编译看左边(父 ...
- java面向对象(下)-抽象类
抽象类和抽象方法 抽象类和抽象方法必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法 抽象类和抽象方法的规则如下 1.抽象类和抽象方法必须要用abstra ...
随机推荐
- Java之反射代码演示说明
还不存在的类–即我们需要使用反射来使用的类 Person类: package com.qf.demo4; public class Person { private String name; publ ...
- RPM安装软件
RMP:rpm命令详解.注意事项.rpm仓库.安装实例.srpm:源码rpm RPM Package Manager 由Red Hat公司提出,被众多Linux发行版所采用: 建立统一的数据库文件,详 ...
- 逆向libbaiduprotect(四)
百度加固libbaiduprotect.so自身对只读字符串进行了加密保护,防止成为破解和逆向的切入口.一般地认为,只要找出这个解密算法就可以对.rodata段的只读字符串进行破解,从而窥探程序的意图 ...
- java基础(三章)
java基础(三章) 一.基本if结构 1.流程图 l 输入输出 l 判断和分支 l 流程线 1.1 简单的if条件判断 if(表达式){ //表 ...
- node.js零基础详细教程(4):node.js事件机制、node异步IO操作
第四章 建议学习时间3小时 课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...
- javascript走马灯的效果(文档标题文字滚动)
做一些网站的时候,文档标题会滚动,这个效果是走马灯的效果. <!DOCTYPE html> <html> <head> <meta charset=" ...
- grid表格选择模式
selModel: { // type: 'checkboxmodel', type: 'cellmodel', // mode: 'SIMPLE', mode: 'SINGLE', checkOnl ...
- Android 的 SDK Manager 无法启动 闪退解决方法
[故障描述] 做 Android 开发就要下载 Android SDK,其中的 SDK Manager.exe 无法启动,一闪而过. 尝试重装 JDK.重新从官网下载 Android SDK.添加环境 ...
- MySQL授权命令grant的使用方法
本文实例,运行于 MySQL 5.0 及以上版本. MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删 ...
- javascript实现禁止右键和F12查看源代码
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...