导航:首页 > 编程语言 > Java面向对象编程

Java面向对象编程

发布时间:2022-01-31 12:52:07

‘壹’ java面向对象程序设计的介绍

《Java面向对象程序设计》通过丰富、实用的精选实例系统地介绍了使用Java语言进行面向对象程序设计的方法和技术,注重提高读者运用Java语言和面向对象技术解决实际问题的能力。全书共12章,内容包括面向对象程序设计概述,Java语言概述,Java语言基础,类、对象和接口,包和Java基础类,Java异常处理,Java图形用户界面设计,Applet及其应用,I/O系统,多线程编程,多媒体编程和网络编程等。《Java面向对象程序设计》编排合理,重点突出,语言流畅,示例丰富。内容上注重科学性、实用性、针对性,突出当今社会对人才应用能力的培养要求;针对所阐述的理论列举了比较典型的实例,便于读者学习、掌握;全部代码都在Java SDK 1.4.2运行环境下调试通过;每章都配有小结和习题,方便读者复习巩固本章知识。

‘贰’ JAVA面向对象编程

这是什么上面的题目?感觉就像是为了这么干而这么干,一点都不合理,下面是代码,不懂可以提问

控制台运行结果

‘叁’ java面向对象程序设计

/*
对象的多态性:动物x=new猫();
函数的多态性:函数重载、重写

1、多态的体现
父类的引用指向了自己的子类对象
父类的引用也可以接收自己的对象
2、多态的前提
必须是类与类之间只有关系,要么继承或实现
通常还有一个前提,存在覆盖
3、多态的好处
多态的出现大大的提高了程序的扩展性
4、多态的弊端
只能使用父类的引用访问父类的成员
5、多态的应用

6、注意事项
*/

/*
需求:
猫,狗。
*/

abstractclassAnimal
{
abstractvoideat();
}

classCatextendsAnimal
{
publicvoideat()
{
System.out.println("吃鱼");
}
publicvoidcatchMouse()
{
System.out.println("抓老鼠");
}
}

classDogextendsAnimal
{
publicvoideat()
{
System.out.println("吃骨头");
}
publicvoidkanJia()
{
System.out.println("看家");
}
}

classDuoTaiDemo
{
publicstaticvoidmain(String[]args)
{
function(newCat());
function(newDog());

Animala=newCat();//向上转型
a.eat();

Catc=(Cat)a;//向下转型
c.catchMouse();


}

publicstaticvoidfunction(Animala)
{
a.eat();
//用于子类型有限
//或判断所属类型进而使用其特有方法
if(ainstanceofCat)
{
Catc=(Cat)a;
c.catchMouse();
}
elseif(ainstanceofDog)
{
Dogc=(Dog)a;
c.kanJia();
}
}


}

‘肆’ 什么是java面向对象编程

面向对象编程(oop)旨在将现实世界中的概念模拟到计算机中,它将现实世界中的所以事物视作对象。对象是存在的具体实体,具有明确定义的状态和行为。

‘伍’ java面向对象编程问题

关于多态
类之间的继承关系使子类具有父类的所有变量和方法,=> 父类所具有的方法也可以在它所有子类中使用,发给父类的消息也可以发送给子类 => 子类的对象也是父类的对象=>子类的对象既可以做本身的类型,也可以做父类的类型。 呵呵,上述推导公式好像绕口令似的。我们举个例子理解上述概念。举例:

public class 动物 //动物是父类

public class 猫 extends 动物 //猫是子类

动物的所有特性在猫中可以使用,发给动物的信息猫也能收到=>猫的对象new 猫();既可以作为本身的类型 猫 a=new 猫(); 也可以作为父类的类型 动物 b = new 猫();这样说理解了吗?如有疑问请访问我们的技术论坛。

如果大家明白了的话,我们就可以从上述公式推导出结论,所有的子类都可以作为父类的类型(同一种类型)来对待。像刚才那个动物有很多子类啊,可以有很多对象。动物 a=new 猫();动物 b=new 狗(); 动物 c=new 猪();。这样的将子类型的对象引用转换成父类型的对象引用,叫做上溯造型(upcasting)。

我们再来引伸一下,我们在数组那节课里讲了,数组存放的元素是相同类型的数据,但是上溯造型使得java允许创建不同类型对象的数组。例如:

Employee[] staff = new Employee[3];

staff[0] = new Manager();

staff[1] = new Secretary();

staff[2] = new Employee();

夷?这是怎么回事啊,数组里面不是相同类型吗?对啊,因为Sectetary和Manager是Employee的子类,所以也可以通过上溯造型变成Employee啊。以前我们还学到了所有对象都是从java.lang.Object 继承下来的。如果数组要是 Object型的话 Object[] obj=new Object[];那就是里面放什么对象都行了。因为什么对象都可以是Object型的。

实践:

// java中的多态

class Shape {

void draw() {}

void erase() {}

}

//圆形

class Circle extends Shape {

void draw() {

System.out.println("Circle.draw()");

}

void erase() {

System.out.println("Circle.erase()");

}

}

//正方形

class Square extends Shape {

void draw() {

System.out.println("Square.draw()");

}

void erase() {

System.out.println("Square.erase()");

}

}

//三角形

class Triangle extends Shape {

void draw() {

System.out.println("Triangle.draw()");

}

void erase() {

System.out.println("Triangle.erase()");

}

}

public class Shapes {

public static Shape randShape() {

switch((int)(Math.random() * 3)) {

default:

case 0: return new Circle();

case 1: return new Square();

case 2: return new Triangle();

}

}

public static void main(String[] args) {

Shape[] s = new Shape[9];

// 向数组里添加类型

for(int i = 0; i < s.length; i++)

s[i] = randShape();

// 用多态的方法调用

for(int i = 0; i < s.length; i++)

s[i].draw();

}

}

‘陆’ java面向对象编程求帮忙

一共三个类:ScoreArray.java、StudentScoreArray.java和Test1.java,具体为:


public class ScoreArray {
private int[] scores;
private int scoreCount;

public int[] getScores() {
return scores;
}

public int getScoreCount() {
return scoreCount;
}
//构造函数
public ScoreArray(int[] scores) {
this.scores = scores;
for (int score : scores) {
if (score >= 0 && score <= 100) {
this.scoreCount++;
}
}
}
//求最大值
public int getMax() {
int[] scores = this.scores;
int temp;
for (int i = 0; i < scores.length; i++) {
for (int j = 0; j < scores.length - 1 - i; j++) {
if (scores[j] > scores[j + 1]) {
temp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp;
}
}
}
return scores[scores.length - 1];
}
//求最小值
public int getMin() {
int[] scores = this.scores;
int temp;
for (int i = 0; i < scores.length; i++) {
for (int j = 0; j < scores.length - 1 - i; j++) {
if (scores[j] > scores[j + 1]) {
temp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp;
}
}
}
return scores[0];
}
//求均值
public double getAvg() {
int sum = 0;
for (int score : this.scores) {
sum += score;
}
return new BigDecimal(sum).divide(
new BigDecimal(this.scores.length),
2, BigDecimal.ROUND_HALF_UP).doubleValue();
}
//排序
public void sort() {
int temp;
for (int i = 0; i < this.scores.length; i++) {
for (int j = 0; j < this.scores.length - 1 - i; j++) {
if (this.scores[j] > this.scores[j + 1]) {
temp = this.scores[j];
this.scores[j] = this.scores[j + 1];
this.scores[j + 1] = temp;
}
}
}
}
//静态说明类
public static void explain() {
System.out.println("本类[ScoreArray]实现了数组的:求最值[getMax()]、求均值[getAvg()]和排序[sort()]方法");
}
}


public class StudentScoreArray extends ScoreArray {
public StudentScoreArray(int[] scores) {
super(scores);
}
//统计
public void statistic() {
super.sort();
Map<Integer, Integer> map = new LinkedHashMap<>();
for (int i : super.getScores()) {
if (map.containsKey(i)) {
map.put(i, map.get(i) + 1);
} else {
map.put(i, 1);
}
}
map.forEach((k, v) -> System.out.println("分数为[" + k + "]的人数为:[" + v + "]"));
}
//静态说明类
public static void explain() {
System.out.println("本类[StudentScoreArray]实现了数组的:求最值[getMax()]、求均值[getAvg()]、排序[sort()]和分布统计[statistic()]方法");
}
}


public class Test1 {
public static void main(String[] args) {
int[] scores = {59, 60, 82, 58, 71, 99, 0, 59, 65};

ScoreArray scoreArray = new ScoreArray(scores);
ScoreArray.explain();
System.out.print("数组内容:[");
for (int i : scoreArray.getScores()) {
System.out.print(i + " ");
}
System.out.println("]");
System.out.println("有效值个数:" + scoreArray.getScoreCount());
System.out.println("最大值:" + scoreArray.getMax());
System.out.println("最小值:" + scoreArray.getMin());
System.out.println("平均值:" + scoreArray.getAvg());
scoreArray.sort();
System.out.print("排序后数组内容:[");
for (int i : scoreArray.getScores()) {
System.out.print(i + " ");
}
System.out.println("]");

System.out.println("");
System.out.println("========华丽的分割线========");
System.out.println("");

StudentScoreArray studentScoreArray = new StudentScoreArray(scores);
StudentScoreArray.explain();
System.out.print("数组内容:[");
for (int i : studentScoreArray.getScores()) {
System.out.print(i + ",");
}
System.out.println("]");
System.out.println("有效值个数:" + studentScoreArray.getScoreCount());
System.out.println("最大值:" + studentScoreArray.getMax());
System.out.println("最小值:" + studentScoreArray.getMin());
System.out.println("平均值:" + studentScoreArray.getAvg());
studentScoreArray.sort();
System.out.print("排序后数组内容:[");
for (int i : studentScoreArray.getScores()) {
System.out.print(i + " ");
}
System.out.println("]");
System.out.println("分数分布统计:");
studentScoreArray.statistic();
}
}


其中对StudentScoreArray类我要特别说明一下:

统计分布情况时,使用了Map,map是一种key-value的数据结构,其有个特点被我所利用:一个map中只能同时存在一个key,所以我以分数为key,以数量为value,遍历分数数组时,如果是第一次遇到这个key(分数),则将其value(数量)置为1;如果已经不是第一次遇见了,则将其value(数量)置为value + 1(数量 + 1)。另外需要遍历这个map实现统计结果的打印,我这里使用了java8以后才支持的Lambda表达式,所以你要运行这个程序必须要使用jdk1.8以上的版本。如果你觉得这样不妥,可以网上再搜一下map的遍历方式。


运行结果:

测试用例都使用的数组:int[] scores = {59, 60, 82, 58, 71, 99, 0, 59, 65};

‘柒’ 用java进行面向对象编程,面向对象是什么意思,请通俗一点解释

通俗一点说就是你可以设定一个类,比如汽车类Car。汽车有很多属性,比如颜色color,品牌brand。
然后呢,你new一个对象出来。Car myCar=new Car()
类具体到某一个特定的个体的时候,就是一个对象了。
我们可以给myCar设定颜色和品牌,还可以让它干好多别的事情。
再说人类。人类是一个很大的群体,但是特定到某一个人,比如你,比如我,比如小明,张三,李四,每个特定的人,都是一个对象,他属于“人”这个类
你先明白java中类的概念。类具体到某个实例,就是对象了

‘捌’ Java面向对象编程有哪些优点

面向对象的优点是:不造重复的轮子,也就是说不干重复的活。
java中把具有相同共性的一类事物抽象为一个类,而对象是这个类的其中一个实体。
例如:人是一个类(有共同的属性,有头发、眼睛、鼻子.....),张三、李四、王五是三个实体对象,而每个对象的属性又是不同的,例如张三是黑头发,李四是黄头发、王五是红头发。
这样复用性比较好。

‘玖’ Java面向对象程序设计 这句话中的对象指的是什么

对象是类的实例的意思
面向对象

面向对象是一种新兴的程序设计方法,或者说它是一种新的程序设计范型,其基本思想是使用对象,类,继承,封装,消息等基本概念来进行程序设计。

它是从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统)。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。

它可以有不同层次的理解:

从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。

从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统。

从程序设计的角度来看,面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。

阅读全文

与Java面向对象编程相关的资料

热点内容
网站有源码和没有源码的区别 浏览:676
如何自学开发app 浏览:591
修电梯pdf 浏览:347
政务云是不是提供虚拟服务器 浏览:57
在哪里看每个app用了多长时间 浏览:635
学程序员要英语四级吗 浏览:131
java视频录制 浏览:756
口头指派式命令 浏览:470
php开发工程师面试题 浏览:954
linux内核源码pdf 浏览:66
mc命令方块怎么提取 浏览:367
有关程序员的五大魔咒你中了几个 浏览:204
本地文件如何上传linux服务器 浏览:17
传奇资源网站源码 浏览:377
f26app怎么下载 浏览:120
程序员与酒 浏览:439
php政府网站源码 浏览:912
前端面试常问算法 浏览:153
pythonopen可以打开文件夹吗 浏览:635
不锈钢加密网带厂家 浏览:347