Java-----抽象类为什么不能实例化?抽象方法为什么不能被static修饰?set和get方法的使用方法

简介: Java-----抽象类为什么不能实例化?抽象方法为什么不能被static修饰?set和get方法的使用方法

为什么抽象方法不能被static修饰?

原因:被static修饰的方法属于类,它还是类的东西,而不是用来给子类继承的。

举例:

如果我们把类比作房子,那么被static修饰的方法就是房子中的一面墙,而抽象方法则可以为房子中的一张白纸,一个桌子等等,墙是没有办法通过继承而迁移的,但桌子,白纸等等,可通过继承将其进行覆盖等操作。


抽象类为什么不能实例化?

在想这个问题的答案之前,我们先想想,实例化的原因:从面向对象的角度想这个问题,我们想实现某个功能,而功能中的方法需要通过对象去调用,而对象是什么呢? 对象就是类的实例,所有的对象都是类的实例。


那么我们再回到问题的本身,抽象,顾名思义就是不具体,类是对对象具体的描述,类相当于图纸,对象相当于产品,而抽象不具体,原因是它没有方法体,不足以形成一个具体的对象,就比如,苹果可以通过实例化产生,而水果不能。


其次我们还考虑到内存问题:对象进行实例化的时候,关键字new向Java申请内存,这个类的成员(成员变量,成员方法)会被保存到内存中,而抽象类,没有具体的成员,没有办法准确的分配内存。


为什么要使用set和get方法呢?

原因是:和Java的封装有关系,在某些类中需要用到private来修饰,这样的话其他的类不能访问这个类里边的变量,就提高了安全性。

但是我们有时需要用到其中变量,那么如何获取呢?这时候就要用到我们说的set()和get()方法。

举例:

尝试直接访问私有属性:

package Test;
public class Father {
    private String name = "apple";
    private int numbers=12;
}
package Test;
public class Son {
    public static void main(String[]args){
        Father father=new Father();
        System.out.println(father.name);
    }
}

报错:

在Father类中添加set和get方法:

public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

在Son中通过get方法获取属性的值:

System.out.println(father.getName());

输出:

apple
相关文章
|
22天前
|
Java
Java中的抽象类:深入了解抽象类的概念和用法
Java中的抽象类是一种不能实例化的特殊类,常作为其他类的父类模板,定义子类行为和属性。抽象类包含抽象方法(无实现)和非抽象方法。定义抽象类用`abstract`关键字,子类继承并实现抽象方法。抽象类适用于定义通用模板、复用代码和强制子类实现特定方法。优点是提供抽象模板和代码复用,缺点是限制继承灵活性和增加类复杂性。与接口相比,抽象类可包含成员变量和单继承。使用时注意设计合理的抽象类结构,谨慎使用抽象方法,并遵循命名规范。抽象类是提高代码质量的重要工具。
34 1
|
25天前
|
监控 Java API
提升 Java 后台性能的十大方法
【4月更文挑战第5天】本文介绍了提升 Java 后台性能的十大方法,包括 JVM 参数调整、代码优化、并发编程、数据库性能优化、I/O 优化、微服务架构、API 设计、负载均衡、容器化和编排以及性能监控。通过这些方法,可以从代码到系统层面全面提升 Java 应用的效率和响应性。注意早期设计对性能的影响,持续优化是关键。
|
20天前
|
Java
Java中ReentrantLock中tryLock()方法加锁分析
Java中ReentrantLock中tryLock()方法加锁分析
13 0
|
9天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
46 3
|
1天前
|
IDE Java 开发工具
基于Java程序设计的实验教学方法优化与实践
基于Java程序设计的实验教学方法优化与实践
7 1
|
3天前
|
存储 Java 索引
【JAVA】HashMap的put()方法执行流程
【JAVA】HashMap的put()方法执行流程
|
6天前
|
Java
Java 与垃圾回收有关的方法
Java 与垃圾回收有关的方法
|
6天前
|
安全 Java
Java基础&面向对象&继承&抽象类
Java基础&面向对象&继承&抽象类
|
6天前
|
存储 Java 测试技术
一文搞清楚Java中的方法、常量、变量、参数
在JVM的运转中,承载的是数据,而数据的一种变现形式就是“量”,量分为:**常量与变量**,我们在数学和物理学中已经接触过变量的概念了,在Java中的变量就是在程序运行过程中可以改变其值的量。
14 0
|
11天前
|
存储 Java
Java动态转发代理IP的实现方法
Java动态转发代理IP的实现方法
27 11