IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java程序设计 面向对象进阶 -> 正文阅读

[Java知识库]Java程序设计 面向对象进阶

Java程序设计 面向对象进阶

final

使用final声明的类不能有子类

使用final声明的方法不能被子类所重写

使用final声明的变量即成为常量

在使用final声明变量的时候,要求全部的字母大写

子类测试

final class a{
}
class b extends a{
}
public class Hello {
    public static void main(String[] args) {
    }
}

image-20220116203749610

方法重写测试

class a{
    public final void p(){

    }
}
class b extends a{
    public void p(){
        System.out.println("1");
    }
}
public class Hello {
    public static void main(String[] args) {
        b s = new b();
    }
}

image-20220116204015222

变量测试

public class Hello {
    public static void main(String[] args) {
        final String A="a";
        A="h";
    }
}

image-20220116204310819

抽象类

抽象类的作用有点类似“模版”,其目的是要设计者依据它的格式来修改并创建新的类。但是并不能直接由抽象类创建对象,只能通过抽象类派生出新的类,再由它来创建对象。但是在抽象类的使用中同样存在单继承的局限,即一个子类只能继承一个抽象类。

抽象类定义、使用规则:

包含一个抽象方法的类必须是抽象类

抽象类和抽象方法都要使用abstract关键字声明

抽象方法只需声明而不需要实现

抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法

格式:

abstract class 抽象类名称{
	属性;
	访问权限 返回值类型 方法名称(参数){
		[return 返回值];
	}
	访问权限 abstract 返回值类型 方法名称(参数);
}

演示:

//定义抽象类
abstract class a{
    private String test="A";

    public String getTest() {
        return test;
    }

    public void setTest(String test) {
        this.test = test;
    }
    public abstract void print();
}
//继承抽象类
class b extends a{
    public void print(){
        System.out.println(super.getTest());
    }
}
public class Hello {
    public static void main(String[] args) {
        new b().print();
    }
}

image-20220116212239370

抽象类与普通类的区别

如果使用普通类,那么子类可以根据自己的需要选择性的进行某些父类方法的覆写,所以普通类无法对子类覆写的方法进行限制。然而抽象类却可以强制性要求子类覆写父类方法,正因为如此,在实际的开发中,不建议让子类继承普通类,而只建议子类继承抽象类。

接口

接口是Java中最重要的概念之一,接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。

格式:

interface 接口名称{
	全局常量;
	抽象方法;
}

实现接口

class 子类 implements 接口A,接口B,..{
}

演示:

//定义接口
interface a{
    String a="测试";
    void print();
}
//实现接口
class b implements a{
    public void print(){
        System.out.println(a);
    }
}
public class Hello {
    public static void main(String[] args) {
        new b().print();
    }
}

image-20220116215123025

继承抽象类实现接口

class 子类 extends 抽象类 implements 接口A,接口B,..{
}

抽象类实现接口

abstract class B implements 接口{
}

接口的继承

interface 子接口 extends 父接口A,父接口B,..{
}

多态

在Java中面向对象主要体现:

方法的重载与重写

对象的多态性

对象的多态性为两种类型:向上转型、向下转型

对象向上转型:父类 父类对象 = 子类实例;
对象向下转型:子类 子类对象 = (子类)父类实例;

向上转型

class a{
    public void test(){
        System.out.println("a-test");
    }
}
class b extends a{
    public void test(){
        System.out.println("b-test");
    }
}
public class Hello {
    public static void main(String[] args) {
        b t = new b();
        a t2=t;
        t2.test();
    }
}

image-20220116224827048

调用的方法是被子类所覆写过的方法,也就是说,如果对象发生了向上转型关系,所调用的方法肯定是被子类覆写过的方法

向小转型

class a{
    public void test(){
        System.out.println("a-test");
    }
}
class b extends a{
    public void test(){
        System.out.println("b-test");
    }
    public void test1(){
        System.out.println("345");
    }
}
public class Hello {
    public static void main(String[] args) {
//        向上转型
        a t=new b();
//        向下转型
        b t2=(b)t;
        t2.test();
        t2.test1();
    }
}

image-20220116225648028

想调用子类自己的方法,则只能用子类声明对象

在进行对象的向下转型之前,必须首先发生对象向上转型,否则将出现对象转换异常

instanceof

使用instanceof关键字判断一个对象到底是哪个类的实例

class a{
}
class b extends a{

}
public class Hello {
    public static void main(String[] args) {
        a t1=new b();
        a t2=new a();
        System.out.println(t1 instanceof a);
        System.out.println(t1 instanceof b);
        System.out.println(t2 instanceof a);
        System.out.println(t2 instanceof b);
    }
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:22:16  更:2022-01-17 11:25:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:27:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码