JAVA基础:abstract class \ interface
来源:互联网 发布:linux schedule 编辑:程序博客网 时间:2024/06/05 02:52
abstract class
抽象类:
如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样的类我们称它为抽象类。
比如new Animal(),我们都知道这个是产生一个动物Animal对象,但是这个Animal具体长成什么样子我们并不知道,它没有一个具体动物的概念,所以他就是一个抽象类,需要一个具体的动物,如狗、猫来对它进行特定的描述,我们才知道它长成啥样。
抽象使用的关键词:abstract
1、abstract 修饰类 抽象类
2、abstract 修饰方法 抽象方法
3、抽象方法没有实现部分
注意:抽象类中的抽象方法 强制子类去重写抽象方法
注意:抽象类不能创建对象(不能实例化对象)
创建对象的方式:比照多态来创建
抽象类注意
1、成员变量:可以有变量 也可以由常量
2、成员方法:可以有抽象方法 也可以有成员方法
3、构造方法:有
注意:抽象类中不一定有抽象方法 但是抽象方法 一定存在抽象类中
注意:抽象类的子类 必须重写抽象父类的所有抽象方法
public class Demo01 {
public static void main(String[] args) { Animal animal = new Cat(); animal.eat(); animal.fun();}
}
abstract class Animal{
final int num = 10;public abstract void eat(); public Animal() { System.out.println("我是父类的抽象方法");}public void fun() { System.out.println("我是成员方法");}
}
class Cat extends Animal{
public Cat() { super();}@Overridepublic void eat() { System.out.println(num); System.out.println("猫吃鱼"); }
}
abstract 与那些关键字不能共存
abstrcat 和 static
static修饰方法用类名去调用,abstract修饰抽象方法没有方法的实现
没有实现部分的方法 只能是方法的声明 不能直接调用 所以不能共存
abstrcat 和 final
final修饰方法不能被重写 abstrcat修饰方法就是为了子类重写方法所以不能共存
abstrcat 和 peivate
private修饰方法只能本类访问 子类访问不到 谈不上重写的方法了 所以不能共存
package com.lanou3g;
接口:
1、狭义的接口 interface关键词修饰的 叫做接口
2、广义的接口: 规则
定义接口:
interface 接口名{}
接口特点
1、接口中只能声明抽象方法
2、如果你不写public abstract关键词修饰 接口中声明方法
那么系统会帮你 默认添加上
书写建议:最好写上默认的修饰词
3、接口也不能实例化对象 (谁要用接口 谁就去实现接口中的方法)
(接口相当于干爹 继承 相当于 亲爹)
可以使用多态的方式创建实现类的对象
4、接口的实现 使用implement(实现) 关键字
接口注意:
1、成员变量:只能有常量(static public final 常量名 = 初值)
当你在接口中声明变量时系统默认 会是 public static final修饰
书写建议:最好写熟了再说
2、成员方法:只有抽象方法 没有成员方法
3、构造方法:没有构造方法
public class Demo03 {
public static void main(String[] args) { InterA a = new Person(); a.print(); System.out.println(InterA.num);}
}
interface InterA{
public static final int num = 10;
public abstract void print() ;
}
class Person implements InterA{
@Override
public void print() {
System.out.println(num); System.out.println("打印");}
}
interface InterX{
public abstract void fun();
}
interface InterY{
public abstract void fun();
}
interface InterZ extends InterX,InterY{
}
- JAVA基础:abstract class \ interface
- Java Interface & Abstract Class
- Java Interface & Abstract Class
- Java Interface & Abstract Class
- Java基础之abstract class与interface,Override与Overload
- java interface vs abstract class
- java interface and abstract class
- Java abstract class vs interface
- Java-Abstract Class and Interface
- Java - Interface versus Abstract Class
- java abstract class vs interface
- java-基础-Interface、abstract类、Static class 、non static class的区别
- java中的abstract class和interface
- java中的abstract class和interface
- java中的abstract class和interface
- java中的abstract class和interface(1)
- java中的abstract class和interface(2)
- java中的abstract class和interface
- 网络安装redhat7.2虚拟机
- 数学建模程序与方法之非线性规划
- 微信APP支付Java服务端
- 【12.12直播】北美KubeCon国内首轮深度解读!
- 条件编译
- JAVA基础:abstract class \ interface
- 刷题笔记:PAT真题在线练习数字分类
- 面向协议与面向对象的区别
- 运行时如何给java对象动态的属性赋值
- BZOJ3207+2802+2318+1933+1934题解 12.11
- 个人规划(一)
- Windows套接字I/O模型(2) -- Select模型
- RHCS集群套件
- HttpServletRequest介绍