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 ...
随机推荐
- 如何编写Spring-Boot自动配置
摘要 本文主要介绍如何把一个spring的项目(特别是一些公共工具类项目),基于spring boot的自动配置的思想封装起来,使其他Spring-Boot项目引入后能够进行快速配置. AutoCon ...
- javaScript 设计模式系列之二:适配器模式
介绍 适配器模式将一个类的接口转接成用户所期待的,有助于避免大规模改写现有客户代码. In software engineering, the adapter pattern is a softwar ...
- mysql 表名默认 windows不区分大小写 在linux区分大小写
MySQL在Linux下数据库名.表名.列名.别名大小写规则: 1.数据库名与表名是严格区分大小写 2.表的别名是严格区分大小写 3.列名与列的别名在所有的情况下均是忽略大小写的 4.变量名也是严格 ...
- phantomjs-prebuilt@2.1.14 install: `node install.js`
在用vue-cli构建项目时,npm install 安装包的时候报错了. 错误信息: npm ERR! Failed at the phantomjs-prebuilt@2.1.14 install ...
- 基于servlet和ajax的聊天室
(手贱点了更新发布时间,发布时间变成6-9...) 2017-5-20,在这个奇特的日子,我不再满足于在本地测试javaweb,于是在上腾讯云买了第一个云服务器,由于是学生认证,所以一个月只要10块钱 ...
- Idea 常用功能汇总,工作中常用技巧
1.隐藏没用到的文件 比如 IDEA 的项目配置文件(.iml 和.idea),打开 Settings-File Types, 加入要隐藏的文件后缀. 2.常用技巧 2.1 通过Alt+F8查看变量 ...
- 在linux系统下安装redis
去官网找到合适的版本,可以直接下载下来,再用fxp上传,也可以直接以下面这种方式下载:$ wget http://download.redis.io/releases/redis-3.2.9.tar. ...
- App测试札记
App测试札记 测试应该收集信息 测试应该问问题 测试应该扮演不同角色 测试应该如实反馈 初学者 有哪些可以利用的信息?需求,技术方案,测试设计,现有功能,相关人员 App会在哪些环境下运行 App会 ...
- jsp图片上传
1.要实现图片上传,首先需要一个组件,这里我用的是smartupload.jar可以到这里下载http://download.csdn.net/detail/mengdecike/8279247 2. ...
- oracle表空间增长异常或表空间占用过高问题分析
本人对oracle调优还处在不断学习状态,这个问题是之前处理的项目上遇到过的,顺利解决了,分享下此类问题的处理思路,不足之处,还请指正. 项目上反馈说业务表空间增长越来越快,上次新增的30G数据文件, ...