java面向对象

时间:2024.4.21

面向对象概述并举例说明 面向过程 强调过程,执行者,强调的是功能行为 面向对象 强调对象,指挥者,将功能封装进对象,强调具备了功能的对象。 面向对象举例 煎饼果子 面向对象思想的特点 A:它是一种更符合人们思考习惯的思想

B:它使复杂的内容简单化

C:它使我们从执行者变成了指挥者 面向对象的特点 A:封装 B:继承 C:多态 开发的过程:其实就是不断的创建对象,使用对象,指挥对象做事情。 类和对象的关系 使用计算机语言就是不断的在描述现实生活中的事物。

java中描述事物通过类的形式体现,类是一组相同属性行为的对象的抽象。

对象即是该类事物实实在在存在的个体。 举例: 人就是一个类(是把每一个相同属性行为的对象进行抽取) 人的属性:姓名,年龄,身高,体重等 人的行为:吃饭,睡觉,说话,跑,跳等 而我们就是对象(是实实在在存在的个体),具体每个人叫什么名字,年龄多大,身高多高,体重多重等,吃饭怎么吃,睡觉怎么睡,说话怎么说等 描述任意一类事物就是在描述他的属性和行为 分析这句话的属性和行为: 上得了厅堂,下得了厨房,写得了代码,查得出异常,杀得了木马,翻得了围墙(黑客技术),开得起好车,买得起新房,斗得过二奶,打得过流氓。 如何创建对象 (1)类 对现实世界中事物的描述(成员变量和方法)

(2)对象 现实世界中实际存在具体的个体 (3)对象的使用以及内存图 new class Person String name; int age; public void speak() { System.out.println("我的姓名是:" + name + ",我的年龄是:" + age); } } 对象的内存图 看图说话 成员变量和局部变量

(1)作用范围 局部变量:方法内public void method(String name) {} 成员变量:类中,对整个类有效{成员变量分为两种一种静态的,一种非静态的}

(2)存储空间 局部变量:栈内存 成员变量:堆内存{静态的成员变量在方法区,非静态的在对象中在堆内存中}

(3)初始化值 局部变量:在使用前必须手动给值 成员变量:jvm默认初始化值。int 0 byte 0 short 0 long 0 double 0.0 boolean false char '\u0000' class Person { int num = 10; public void method(){ int num = 20 ; System.out.println(num); } }

匿名对象

(1) 当对对象中的功能只执行一次的时候使用。否则,请你使用有名字的对象。

Person p = new Person(); p.show(); p.show(); new Person().show(); new

Person().show(); (2)用于作为实际参数进行传递。 Person p = new Person();

method(p); method(new Person()); public static void method(Person p){} (3)是否可以用匿名对象调用属性,是否有意义?

(2) 封装 (1)封装的好处:便于重复使用,安全性高。 (2)private权限修饰符 class

Demo{ private int age;//把属性私有对外提供公共的访问方法,可控性提高了 public void setAge(int age){ if(age>0 && age<=200){ this.age = age; }else { System.out.println("请回火星"); } } public int getAge(){ return age; } /* 设置是setXxx要传参数 获取是getXxx要返回值类型,返回值类型和属性一致 */ } class DemoTest{ public static void main(String[] args) { Demo d = new Demo(); d.setAge(-

20); System.out.println(d.getAge()); } } this关键字及其使用场景 (1)代表当前对象的引用。使用的时候,谁调用方法,this就代表谁。 (2)什么时候使用this呢? A:当局部变量和成员变量重名的时候,可以用this进行区分。 B:this调用成员方法 C:构造函数中使用this this() 必须放在第一行。 同下面的道理: Person(String name){ this.name = name; System.out.println("有一个参数的构造函数"); } Person(String name,int age){ this("张三"); this.name = name; this.age = age; System.out.println("有两个参数的构造函数"); } Person p = new Person("lisi",20); Person p2 = new Person("wangwu");


第二篇:JAVA练习题(面向对象)


《JAVA练习题》面向对象

一、 判断正误:

1. Java语言为所有的Java程序自动导入包“java.lang”,因此,Java程序可以直接用

“java.lang”中的类和接口。位于类继承关系层次结构树的根部的类Object就是在包“java.lang”中的一个类。

2. 有时候为了避免引起混淆,构造方法的方法名可以不与所属类名同名。

3. 构造方法一般不允许有任何返回值,因此需要在返回类型处标注为void.

4. 任何类都必须显式地定义该类的构造方法,以便对类的成员进行各种初始化操作。

5. 运行下面程序将在控制台窗口中输出a。

public class A{

public A ( ){

char c=’a’;}

public static void main(String args[ ]) {

System.out.println( c );}

}

6. 如果在定义一个类的时候没有用到关键字extends,则这个类没有直接父类。

7. 在同一个类中,不允许存在具有相同方法名和相同参数类型列表的方法,即使该方法

的返回类型不相同。

8. 抽象方法不能含有方法体,并且必须在抽象类中。

9. 抽象类是不能实例化的,抽象类的实例化,应当通过其不具有抽象属性的子类来创建。

二、 填空:

1. 填空面名对象的计算机语言一般应具有3个基本特征,分别是__________________。

2. 在下面的程序编译之后,按“java A 1 2 3”方式运行的结果是:_______。

public class A {

public static void main(String args[ ]) {

int i;

for(i=0;i<args.length;i++)

{System.out.println(“args[“+i+”]=”+args[i]+”;”);

}

}

}

3. 请按要求完成下面的程序,最终该程序的输出结果是:________。

class A {

public int m;

public A(int d)

{ m=d; }

}

public class B extends A {

public int n;

public B(int ds, int d) {

____________________// 要求将其父类的成员m初始化为ds的值

n=d;

}

public static void main(String args[ ]) {

1

B s=new B(2,3);

System.out.println(s.n+s.m);

} }

4. 下面程序输出的结果是_______。

public class A {

static int m=0;

public int s( ) {

m++;

return m;

}

public static void main(String args[ ]) {

A a=new A( );

A b=new A( );

A c=new A( );

a.s ( );

b.s ( );

c.s ( );

int i=a.s( );

System.out.println(i); }}

三、选择题:

1. 对于下面哪些类定义,可以通过“new A( )”生成类“A”的实例对象?

A.

public class A

{

}

B.

public class A

{ public A(void) { }

}

C.

public class A

{public A(String s) { }

D.

public class A

{public void A ( ) { }

public A(String s) { }

2. 关于下面程序,哪些结论是正确的?( )

public class A {

public A( ) {

System.out.print(“2”);

}

2

public static void main(String args[ ]) {

A s=new A( );

s.A( );

System.out.print(“1”); } }

A. 程序可以通过编译并正常运行,结果输出“21”。

B. 程序可以通过编译并正常运行,结果输出“221”。

C. 程序无法通过编译。

D. 程序可以通过编译,但无法正常运行。

3. 下面程序的输出是什么?

public class A {

int m=2;

String s=null;

A( )

{ m=3;

s=”constructor”; }

public static void main(String args[ ]) {

A app=new A( );

System.out.println(app.m+app.s);

}}

A.3null B.3constructor C.2constructor D.2null

4. 下面程序的输出是什么?

class A {

int m=2;

String s=null;

void A( )

{ m=3;

s=”constructor”; }

public static void main(String args[ ]) {

A app=new A( );

System.out.println(app.m+app.s);

}}

A.3null B.3constructor C.2constructor D.2null

5.己知字母‘a’和‘b’所对应的数值分别是97和98。关于下面程序代码,哪些选项的结论是正确的?

public class A {

static char name;

static int age;

public static void setData(char n) {

name=n;}

public static void setData(int m) {

age=m;}

public static void main(String args[ ]) {

setData((int)’a’);

setData((char)98);

3

System.out.println(“Name:”+name+”; Age:”+age); }}

A.程序可以通过编译并正常运行,结果输出“Name:a; Age:98”

B.程序可以通过编译并正常运行,结果输出“Name:b; Age:97”

C.程序可以通过编译并正常运行,结果输出“Name:b; Age:98”

D.程序可以通过编译并正常运行,结果输出“Name:a; Age:97” E程序无法通过编译

6.关于下面程序,哪些选项的结论是正确的?

class A{

public abstract void m( );

}

class B extends A {

public void m( )

{ System.out.print(“1”);

}

}

class C extends A {

public void m( )

{ System.out.println(“2”);

}

}

public class T{

public static void main(String args[])

{ A d=new B();

d.m( );

d=new B( );

d.m( ); }

}

A.程序可以通过编译并正常运行,结果输出“12”。

B.程序可以通过编译并正常运行,结果输出“11”。

C.程序无法通过编译,因为类型转换不合法。

D.程序无法通过编译,因为类A的定义不对。

7.下面程序的输出是什么?

class A{

static int m=0;

}

class T{

public static void main(String args[ ]) {

A a=new A( );

A b=new A( );

a.m=1;

b.m=2;

System.out.println(a.m);

}

4

}

A.0 B.1 C.2 D.上面的程序含有编译错误

8.设在一个Java包Kit1中含有源程序文件A.java,其内容如下: package kit1;

public class A {

public A( ) {

System.out.print(“1”); }

}

在另一个包中含有源程序文件B.java,其内容如下:

package kit2;

import kit1.A;

public class B extends A {

public B( )

{ System.out.print(“2”);

}

public static void main(String args[ ]) {

B t=new B( );

} }

A.程序可以通过编译并正常运行,结果输出“12”

B.程序可以通过编译并正常运行,结果输出“21”

C.程序可以通过编译并正常运行,结果输出“2”

D.程序无法通过编译

9.设在一个Java包Kit1中含有源程序文件A.java,其内容如下: package kit1;

class A {

public A( ) {

System.out.print(“1”); }

}

在另一个包中含有源程序文件B.java,其内容如下:

package kit2;

import kit1.A;

public class B extends A {

public B( )0

{ System.out.print(“2”);

}

public static void main(String args[ ]) {

B t=new B( );

} }

A.程序可以通过编译并正常运行,结果输出“12”

B.程序可以通过编译并正常运行,结果输出“21”

C.程序可以通过编译并正常运行,结果输出“2”

D.程序无法通过编译

5

更多相关推荐:
java面向对象总结

面向对象面向对象是一种思想能让复杂的问题简单化让我们角色从执行者变成指挥者不要知道过程只要知道结果一切皆对象描述一个事物其实就是在描述事物的属性和行为对象的特点在于封装数据数据包含着属性和行为我们用类来描述一个...

java面向对象总结(绝对经典)

主要内容学习方法介绍面向对象思想介绍类与对象关系封装概念1学习方法介绍四问法什么有什么特点怎么用demo什么时候用test2面向对象与面向过程的区别面向过程强调的是功能和行为面向对象强调的是具有某种功能的对象即...

java面向对象编程总结

java之面向对象编程本章内容编程语言的发展面向过程的设计思想面向对象的设计思想对象和类的概念面向对象编程原则对象和引用Java类的定义构造函数对象的创建和使用this关键字static关键字package和i...

Java面向对象总结

1static修饰的成员变量和方法既可以通过类访问也可以通过实例访问普通的方法和成员变量只能通过实例访问原因类只有被实例化后普通的成员变量才会分配内存所以类无法直接访问普通成员变量只能通过实例访问2方法的参数传...

java面向对象精华总结

Java面向对象精华总结面向对象是相对面向过程而言的面向过程强调的是功能行为面向对象是将功能封装进对象强调具备了功能的对象面试官若问什么是面向对象开放式问题回答必须有自己的体会1面向对象是一种思想可以使复杂的问...

java面向对象总结

面向对象1基本概念面向对象是一种思想它专注于对象也就是人们要进行研究的任何事物面向对象更加有利于处理问题并且使程序更具有灵活性三个特点1封装性两个方面保护信息把对象的属性和行为看作一个整体2继承性主要描述反映事...

java面向对象总结

1.子类与父类的关系?子类继承父类但不能继承private成员,子类只能有一个父类,如果省略了extends,子类的父亲就是object,子类继承了父类和祖先的成员,子类可以添加新的成员变量和方法,也可以隐藏父…

java面向对象

一面向对象Java是纯粹的面向对象的语言Java的基本语言实际上就是依附在类里面对象的特征静态特征属性变量动态特征行为方法二类于对象1类具有共同性质的事物的集合就称为类类是一个抽象的概念要利用类的方式来解决问题...

java面向对象

面向过程缺乏对对数据的封装数据和方法分离oo面向对象抽象数据类型将不同数据类型的数据的集合组成一个整体用来描述一种新的事物不同数据类型的集合就是抽象数据类型类类就是抽象数据类型不但定义了抽象数据类型的组成成员变...

面向对象技术与方法每章小结

01导论求解问题有多种不同途径算法与实体是迄今发现非常适合以计算机为求解工具的问题解表达方式面向对象技术认为程序是实体在计算机中的实现程序设计方法与程序设计语言相互独立相辅相成程序设计语言包括语法语义与语用三方...

Java面向对象编程习题总结

第一章面向对象开发方法概述1面向对象的软件开发有哪些优点1把软件系统看成是各种对象的集合这更接近人类的自然思维方式2软件需求的变动性往往是功能的变动而功能的执行者对象一般不会有多大的变化比结构化更稳定3对象包括...

Java 面向对象16种设计原则总结版

Java面向对象16种设计原则一类的设计原则1依赖倒置原则DependencyInversionPrincipleDIP2里氏替换原则LiskovSubstitutionPrincipleLSP3接口分隔原则I...

java面向对象总结(24篇)