Java从入门到精通05-抽象类、接口、Final

1、父类方法不能确定时 ,可以用abstract关键字来修饰该方法;

2、当一个类继承的父类是抽象类的话,需要我们把抽象类中的所有抽象方法全部实现;

抽象类的注意事项:
1、抽象类不能被实例化;
2、抽象类不一定要包含抽象方法,也就是说,抽象类可以没有abstract方法;
3、一旦包含类abstract方法,则这个类必须声明为abstract;
4、抽象方法不能有主体,如:abstract void aaa(){};

------------------------------------------------------------------------------------------

接口就是给出一些没有内容的方法,封装在一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。语法如下:

class 类名 implement 接口 {
方法;
变量;
}

接口是更加抽象的抽象类,抽象类里的方法可以有方法体,接口里的所有方法都没有方法体。
接口体现了程序设计的多态和高内聚低耦合的设计思想。

接口的注意事项:
1、接口不能被实例化;
2、接口中所有的方法都不能有主体;
3、一个类可以实现多个接口;
4、接口中可以有变量(但变量不能用private和protected修饰),接口中的变量本质上都是static的,而且是final,不管你加不加static修饰;在java开发中,我们经常把经常用的变量,定义在接口中作为全局变量使用;
5、一个接口不能继承其他的类,但可以继承别的接口;

实现接口VS继承类
java的继承是单继承,也就是一个类最多只能有一个父类,这种单继承的机制可保证类的纯洁性,比C++中的多继承机制简洁。
1、实现接口可以看作是对继承的一种补充;
2、实现接口可在不打破继承关系的前提下,对某个类功能扩展,非常灵活;

interface Usb{
    int a=1;
    public void start();
    public void stop();
}

class Camera implements Usb{
    public void start(){
        System.out.println("Camera is starting");
    }

    public void stop(){
        System.out.println("Camera is stoping");
    }
}

class Phone implements Usb{
    public void start(){
        System.out.println("Phone is starting");
    }

    public void stop(){
        System.out.println("Phone is stoping");
    }
}

class Computer{
    public void useUsb(Usb usb){
        usb.start();
        usb.stop();
    }
}
public class Test {
    public static void main(String[] args){
System.out.println(Usb.a);
        Computer computer=new Computer();
        Camera camera=new Camera();
        Phone phone=new Phone();
        computer.useUsb(camera);
        computer.useUsb(phone);
    }
}

再一典型实例:

interface Car{
    String getName();
    int getPrice();
}

class BMW implements Car{
    public String getName(){
        return "BMW";
    }
    public int getPrice(){
        return 300000;
    }
}

class CheryQQ implements Car{
    public String getName(){
        return "CheryQQ";
    }
    public int getPrice(){
        return 30000;
    }
}
public class CarShop {
    private int money=0;
    public void sellCar(Car car){
        System.out.println("车型:"+car.getName()+",单价:"+car.getPrice());
        money+=car.getPrice();
    }
    public int getMoney(){
        return money;
    }

    public static void main(String args[]){
        CarShop carShop=new CarShop();
        carShop.sellCar(new BMW());
        carShop.sellCar(new CheryQQ());
        System.out.println("总销售额:"+carShop.getMoney());
    }
}

=============================================================

final注意事项:
1、final修饰的变量又叫常量,一般用xx_xx_xx来命名;
2、final修饰的变量在定义时,必须赋值,并且以后不能再赋值或修改;

final使用时机:
1、因为安全的考虑,类的某个方法不允许修改;
2、类不会被其他的类继承;
3、某些变量值是固定不变的,比如圆周率3.1415926

时间: 2024-10-16 10:21:42

Java从入门到精通05-抽象类、接口、Final的相关文章

《JAVA 从入门到精通》 - 正式走向JAVA项目开发的路

以前很多时候会开玩笑,说什么,三天学会PHP,七天精通Nodejs,xx天学会xx ... 一般来说,这样子说的多半都带有一点讽刺的意味,我也基本上从不相信什么快速入门.我以前在学校的时候自觉过很多门语言,但基本都只是了解了一个大概,入门肯定也算不上了.顶多也就能吹吹牛,说几个大的概念而已. 公司最近转型,决定抛弃PHP了,我们的出路是:要么H5,要么JAVA,要么走人.纠结了一段时间后,决定还是转JAVA了. 当一个人在自己熟悉的领域的时候,好像说什么都很有自信,都觉得自己是对的.那时候我们的

Java从入门到精通pdf电子版

Java从入门到精通pdf电子版 链接:https://pan.baidu.com/s/1nzy8LV6d2_qAD3oKS-Fj9Q 提取码:at3x 简介: <Java从入门到精通>从初学者小白角度出发,通过通俗易懂的白话语言.丰富多彩的实战实例,详细介绍了使用Java语言进行程序开发应该掌握的各方面技术和技能,让你在编程开发中越走越远 目录 · · · · · · 第一篇 基础篇 第1章 Java概述 第2章 Java基本语言 第3章 控制流程语句 第4章 数组 第二篇 面向对象 第5章

java入门到精通(05)

/** * 数组是具有相同数据类型的一组数据的集合 */ //一维数组 //一维数组实质上是一组相同类型数据的集合,但需要再程序中处理一组数据或者传递一组数据时, //可以使用这种类型的数组 //创建一维数组 数组元素类型 数组名字[]; 数组元素类型[] 数组名字; int arr[]; String[] atr; //声明数组后,还不能访问他的任何元素,因为声明数组仅仅是给出呢数组名字和元素的数据类型,要想真正的使用数组 //还要为器分配内存空间,且分配的内存空间必须知名数组的长度,分配内存

《Java 从入门到精通(第二版)》 观书有感

笔者今天认真试读了下此书,首先,按照笔者看书的习惯来说,喜欢先看看前面的部分.作者在前言里放了张学习java的路线图,是一个比较标准的学习流程.可是为什么在编程进阶那里放了个设计模式,然后下次才是抽象类与接口,包及访问权限(这名字和java编程思想好熟悉啊),个人认为,设计模式不应该放上来的,可能作者这里的设计模式有其它的含义吧.         全书文字和图像布局都比较合理,看着也挺舒服的.并且发现书还不是一个人写的,不由好几个不同的人共同撰写的.接下来就是目录了,从目录的结构来看,知识点很全

解读Java从入门到精通学习路线图

Java作为一种通用的编程语言可以做很多事情,但怎么学Java就看怎么用了,很多初学者想通过埋头苦学.马不停蹄的敲着代码记住Java基本原理,但一遇到困难便会让自己发狂,种种坎坷将自己打回原形. 为了排除大家的困惑,学习了精心准备Java学习路线图,建议你耐心的读完此篇,保你在学Java的道路上能事半功倍. 01Java基础知识 在学习Java之前要先了解计算机基础知识,然后再学习Java,同时也要熟知DOS常用命令.Java概述.JDK环境安装配置.环境变量配置,当JDK和环境变量配置完毕后,

《Java从入门到精通》学习总结3

1. 3种构成重载的条件: 参数类型不同.参数个数不同.参数顺序不同 只有返回值类型不同并不足以区分两个方法的重载. 2. import关键字除了导入包之外,还可以导入静态成员,这是JDK 5.0以上版本提供的新功能.导入静态成员可以使程序员编程更加方便 package com.lzw; import static java.lang.Math.max; import static java.lang.System.out; public class ImportTest { public st

《Java从入门到精通》第十二章学习笔记

第12章  输入和输出 一.流概述 流是指一组有序的数据序列,数据源和输出目标可以是文件,网络,压缩包或其他. 二.输入/输出流 所有输入流都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类:所有输出流都是抽象类OutputStream(字节输出流)和抽象类Writer(字符输出流)的子类. 1.输入流 InputStream是所有字节输入流的父类,该类主要方法如下,方法出现错误时候会引发IOException异常. (1)read():从输入流中读取数据的下

Java从入门到精通04-类、对象

Java语言是面向对象的,计算机语言的发展向接近人的思维方式演变: 类和对口箱的区别和联系1.类是抽象的,概念的,代表一类事物,比如人类.猫类...2.对象是具体的,实际的,代表一个事物,比如张三.李四...3.类是对象的模板,对象是类的一个个体.实例: 一个全面类的定义模板: package 包名; class 类名 extends 父类 implements 接口名{ 成员变量; 构造方法; 成员方法; } 类的成员方法的参数可以是多个,方法可以没有返回值: 构造方法是类的一种特殊方法,它的

《Java从入门到精通》第三章学习笔记

第3章 Java语言基础 一.标识符和关键字 1.Java中的标识符用于标识类名.变量名.方法名.数组名.文件名. 2.标识符的命名规则:由字母.数字.下划线和美元符号组成,但第一个字符不能是数字.同时标识符不能选用Java的关键字和保留字. 3.一般的约定命名规则: (1)类和接口名:每个词首字母大写,如MyClass,HelloWorld: (2)方法名:第一个词的首字母小写,其余词首字母大写,尽量少用下划线,如myMethod,myGetData: (3)常量名:基本数据类型的常量名全部用