抽象类定义成员变量(为什么抽象类可以设置成员变量 ,而普通类不可以)

:暂无数据 2026-08-15 22:20:07 0

抽象类定义成员变量(为什么抽象类可以设置成员变量 ,而普通类不可以)

本篇文章给大家谈谈抽象类定义成员变量,以及为什么抽象类可以设置成员变量 ,而普通类不可以对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录

为什么抽象类可以设置成员变量 ,而普通类不可以

.......
abstract class A{
int a=0;
}//对
class B{
int b=0;
}//对

java 抽象类中可以定义哪些成员变量和函数

都可以,抽象类中可以包含抽象方法,但是不是一定要包含。一个抽象类可以没有抽象方法都行。如果一个类中包含了一个抽象方法,那么这个类一定是抽象类。
抽象类中能包含的与普通类没什么根本区别。
1.如果一个类被定义为抽象类,且没有包含任何抽象方法,(也就是说该抽象类已经都实现了这些方法),那么子类在继承这个抽象类的时候不必重写这些方法。
2.相应的,如果一个类被定义为抽象类,包含抽象方法,那么在子类中一定要实现这些抽象方法。否则,子类必须声明为一个抽象类。

java抽象类里面用该抽象类的子类作为成员变量,这是什么用法

这个是java的多态特性,其实不是父类用子类的成员变量,是子类用子类的成员变量
Fu fu = new Zi();
这里的fu实际上已经指向子类了

创建一个学生类,成员属性为学号,姓名,性别,年龄,java,成绩成员属性通过构造方法

public class Student {

 //1、定义成员变量

private String no;//学号

private String name;//姓名

private String sex;//性别

private String age;//年龄

private float score;//成绩

//2、通过构造方法初始化成员变量的值

public Student(String no, String name, String sex, String age , float score) {

this.no = no;

this.name = name;

this.sex = sex;

this.age = age;

this.score = score;

}

//测试

public static void main(String args) {

//new一个学生对象,并使用构造方法初始化成员变量      

Student S01 = new Student("s01", "张三", "男", "20", 99);

System.out.println("学号:"+S01.no+"\n"+

"姓名:"+S01.name+"\n"+

"性别"+S01.sex+"\n"+

"年龄"+S01.age+"\n"+

"成绩"+S01.score);

}

}

代码截图:

扩展资料:

抽象类

并不是所有种类的事物都可以被实例化,换而言之,有的种类只是一种抽象概念,现实中并没有实际存在的对应物。

比如:假设所有的动物都会叫,我们可以定义一个类“动物”,定义类中的一个成员函数“叫”,我们知道猫的叫声,也知道狗的叫声,然而“动物”是如何“叫”的?我们根本无法实现它。

所以,我们引入了抽象类的概念,抽象类是无法被实例化的,无法声明抽象类的对象。

通常,用abstract修饰的类是抽象类;C++中包含纯虚函数的类是抽象类;Java中含有抽象方法的类是抽象类;继承了纯虚函数而没有实现它的类也是抽象类。

抽象类只能被用作基类,作用体现在:

1、约束派生类必须实现的成员函数或方法。

2、不同派生类中同名的成员函数实现不同,体现了多态性。

参考资料:百度百科-类(编程术语)

关于抽象类和静态成员变量的问题

LZ需要明白静态变量属于类本身,存储于方法区,与类的实例无关。而之所以用其子类可以引用,是因为虚拟机在加载的A1,A2的时候会先加载A,至于解决方法:就是把static去掉(用instance来引用)

关于接口和抽象类的简单理解

抽象类:

抽象类体现了数据抽象的思想,是实现多态的一种机制。

1.由 abstract 关键词修饰的类称之为抽象类。 

2.抽象类中没有实现的方法称之为抽象方法,也需要加关键字 abstract 。 

3.抽象类中也可以没有抽象方法。 

4.抽象类中可以有已经实现的方法,可以定义成员变量。

5.抽象类可以多层继承。
接口:

接口提供的只是一种形式,而没有具体的实现。同时实现该接口的实现类必须要实现该接口的所有方法,通过使用implements关键字实现。

1.由 interface 关键词修饰的称之为接口; 

2.接口中可以定义成员变量,但是这些成员变量默认都是 public static final 的常量。 

3.接口中没有已经实现的方法,全部是抽象方法。 

4.一个类实现某一接口,必须实现接口中定义的所有方法。 

5.一个类可以实现多个接口。
区别:  

1.抽象层次不同。

    抽象类是对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,

    接口却是对类局部(行为)进行抽象。

2.设计层次不同。

    抽象类是自下而上来设计的,要先知道子类才能抽象出父类,是自底向上抽象而来的。

    接口不需要知道子类的存在,只需要定义一个规则即可,是自顶向下设计出来的。

3.实现不同。

比如 鸟和飞机都有飞的行为

用抽象类实现:

父类:

飞机:
鸟:
用接口实现:

接口:

飞机:
鸟:
鸟类有吃东西的方法。但用抽象类继承,飞机也要实现吃东西的方法,显然是不合理的,

所以从这里可以看出来,抽象类是抽象的共有的属性或方法。而接口只是抽象了局部的一部分。
抽象类+接口:
鸟:
接口:

java中的抽象类中的方法必须是抽象方法么其中的成员变量必须是public static final的么

抽象类可以有抽象方法也可以没有抽象方法,有抽象方法的类一定是抽象类,抽象类不能被实例化,就是不能new。
接口里定义的变量用public static final修饰,抽象类里面也可以定义被public static final修饰的变量

编写一个抽象类Shape,声明计算形状面积的抽象方法ShapeArea()和成员变量ShapeColor(颜色).再分别定义Shap

你这个人问题我也问过,是yinfengnong这位大佬帮我的非常感谢他。再次我把他的代码给你。侵权立删网页链接

代码如下:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788

#include 《iostream》#include 《string》using namespace std; #define PI 3.1415926 class Shape { public:    Shape(const string& color)        : mShapeColor(color)    {}     const string& GetShapeColor() {        return mShapeColor;    }     void SetShapeColor(const string& color) {        this-》mShapeColor = color;    }     virtual double ShapeArea() = 0; private:    string mShapeColor;}; class Circle : public Shape { public:     Circle(const string& color, double raidus)        : Shape(color), mRaidus(raidus)    {}     double ShapeArea() {        return PI * mRaidus * mRaidus;    } private:    double mRaidus;}; class Rectangle : public Shape { public:    Rectangle(const string& color, double width, double height)        : Shape(color), mWidth(width), mHeight(height)    {}     double ShapeArea() {        return mWidth * mHeight;    } private:    double mWidth;    double mHeight;}; class Triangle : public Shape { public:    Triangle(const string& color, double width, double height)        : Shape(color), mWidth(width), mHeight(height)    {}     double ShapeArea() {        return mWidth * mHeight / 2;    } private:    double mWidth;    double mHeight;}; int main(){    Circle c("红色", 123.456);    cout 《《 "圆:颜色=" 《《 c.GetShapeColor() 《《 ", 面积=" 《《 c.ShapeArea() 《《 endl;     Rectangle r("白色", 100, 300);    cout 《《 "矩形:颜色=" 《《 r.GetShapeColor() 《《 ", 面积=" 《《 r.ShapeArea() 《《 endl;     Rectangle t("绿色", 123, 234);    cout 《《 "三角形:颜色=" 《《 t.GetShapeColor() 《《 ", 面积=" 《《 t.ShapeArea() 《《 endl;     return 0;}

java抽象类中可以声明变量吗能赋初值吗

public class chouDemo {
public static void main(String args) {
father s=new son();
s.aaaa(3, "hello");//3和hello就是给形式参数赋值
}
}
abstract class father{
int i=12;
public void aaa(){
int a=1;//实例方法直接赋值
}
public abstract void aaaa(int y,String s);//抽象方法没有方法体,也就是没有成员变量
}
class son extends father{
public void aaaa(int y,String s){
int x=y;
String c=s;
}
}

如果你还想了解更多这方面的信息,记得收藏关注本站。

抽象类定义成员变量(为什么抽象类可以设置成员变量 ,而普通类不可以)

本文编辑:admin

更多文章:


数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)

数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)

今天给各位分享数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例的知识,其中也会对数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月7日 17:00

编程语言出现的先后顺序(最早的编程语言是哪一个)

编程语言出现的先后顺序(最早的编程语言是哪一个)

今天给各位分享最早的编程语言是哪一个的知识,其中也会对最早的编程语言是哪一个进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月7日 16:10

小程序源码有什么用(大商创小程序源码好用吗)

小程序源码有什么用(大商创小程序源码好用吗)

“小程序源码有什么用”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看小程序源码有什么用(大商创小程序源码好用吗)!

2026年9月7日 15:40

springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)

springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)

大家好,关于springmvc的依赖很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于springMVC的注入方式有哪几种,这与springMVC依赖的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还

2026年9月7日 14:00

it培训评价网(it培训排名机构十大IT培训机构)

it培训评价网(it培训排名机构十大IT培训机构)

这篇文章给大家聊聊关于it培训评价网,以及it培训排名机构十大IT培训机构对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年9月7日 13:00

个人博客页面布局(新手站长怎样做好独立博客初期运营工作)

个人博客页面布局(新手站长怎样做好独立博客初期运营工作)

大家好,如果您还对个人博客页面布局不太了解,没有关系,今天就由本站为大家分享个人博客页面布局的知识,包括新手站长怎样做好独立博客初期运营工作的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年9月7日 12:40

display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)

display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)

大家好,关于display flex 自动换行很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于overflow-y:hidden;overflow-x:auto;无效解决方法的知识点,相信应该可以解决大家的一些困惑和问题,如

2026年9月7日 11:00

小程序免认证源码(小程序源码都能干嘛)

小程序免认证源码(小程序源码都能干嘛)

本篇文章给大家谈谈小程序免认证源码,以及小程序源码都能干嘛对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月7日 10:50

timestamp without time zone(Postgresql中to_date()函数使用问题)

timestamp without time zone(Postgresql中to_date()函数使用问题)

各位老铁们好,相信很多人对timestamp without time zone都不是特别的了解,因此呢,今天就来为大家分享下关于timestamp without time zone以及Postgresql中to_date()函数使用问题

2026年9月7日 09:40

网页制作代码特效大全(谁知道网页打字机特效的代码)

网页制作代码特效大全(谁知道网页打字机特效的代码)

大家好,如果您还对网页制作代码特效大全不太了解,没有关系,今天就由本站为大家分享网页制作代码特效大全的知识,包括谁知道网页打字机特效的代码的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年9月7日 04:20

最近更新

创业加盟网1688(怎样考察加盟店)
2026-09-07 17:50:14 浏览:0
热门文章

yoga pro 14s carbon(yoga14s接口类型)
2026-07-03 17:50:01 浏览:5
domino directory(帮我翻译一下Recipient’s Domino Directory entry does not specify a valid Notes mail file)
2026-08-03 19:20:01 浏览:4
标签列表