Java中类的结构及使用
1.什么是对象?
答:万物皆对象;
2.什么是对象的实质?举例说明
答:对象的实质是属性和行为。
例1).张三
属性:姓名、性别、身高、民族……
行为:跑、跳、工作、唱歌
例2).我的招商银行一卡通
属性:账号、密码、余额……
行为:存款、取款、转账……
3.什么是类?为什么要使用类?
答:1).类是具有共同属性和行为的对象集合。
2).类定义了对象的属性和方法。
3).通过类可以实例化多个该类的对象,每个对象的属性值不同,可以说类好比设计图纸,而对象好比根据图纸建设出来的多栋楼房。
4).类是Java程序的基本组成单位。
4.什么是面向对象?如何在Java中使用面向对象的思想?
答:1).面向对象的思想已经不仅仅是编程思想,已经扩展到设计、测试等各个方面。
2).面向对象指的是以对象为基本单位去分析、设计以及实现系统。
3).Java具备描述对象以及对象之间关系的能力,因此称为面向对象的语言。
*分析过程先有对象后有类;开发过程先有类后有对象。
5.类的基本结构包含哪些内容?举例说明
答:1).属性:对象数据的描述;
2).方法:对象的行为;(可以做的事情)
3).构造方法:用于实例化对象;
4).内部类:(inner class)即在类体中声明的类。
5).块:分为静态块,实例块
其中属性、方法、构造方法是经常使用的元素,而块、内部类就使用的比较少。
例:public class Person{
String name; //姓名
Int age; 属性
/**
*吃的方法
*/
Public void eat(){
System.out.println(“吃的真香!!!”); 方法
}
Public void speak(){
System.out.println(“说得真好听!!!”);
}
Public Person(){// 创建一个对象时需要的方法}
构造方法
{
System.out.println(“我是实例块”);
}
Static{ 块
System.out.println(“我是静态块”);
}
Class InnerClass{
} 内部类
}
6. 什么是类的声明形式?包含哪些内容?
答:类的声明形式(【】中是可选项,即可有可无)
【访问权限修饰符】【修饰符】 class 类名{
}
7.为什么要使用类?举例说明
答:类的作用:累就是一个模板,定义多个对象共同的属性和方法。
例:public class Student{
Private String name;
public void study(){
}
}
8.什么是属性?如何使用属性?举例说明
答:1).属性即对象的数据;
2).注意:属性又称为成员变量,是声明在类中的变量,在方法体中声明的变量称为局部变量或临时变量,后续详细学习。
3).属性的声明方式
【访问权限修饰符】【修饰符】数据类型 属性名【=初值】
例:private String name;
Private double salary;
Private static int count = 0;
9.如何使用方法?
答:1).Java类中的方法声明形式(【】中的内容是可选项,即可有可无)
【访问权限修饰符】【修饰符】返回值 数据类型 方法名(形式参数列表){
执行语句;
return 返回值;
}
2).方法即对象行为。
10.方法都包含哪些部分?分别是什么?
答:1).什么是方法?
*方法就是定义在类中具有特定功能的一段独立的小程序
*方法也称为函数
2).访问权限修饰符及修饰符
*访问权限控制方法被调用的范围
*修饰符包括static/final/abstract/synchronized
*都在后续学习中详细学习
3).返回值类型
*方法运行后的返回结果的数据类型,如果没有返回值使用void。
4).参数类型
*形式参数的数据类型。
5).形式参数
*就是一个变量,用于存储调用方法时传递给方法的实际参数。
6).return
*用于结束方法。
7).返回值
*该方法执行后的结果,该结果会返回给调用者。
11.在定义方法时需要注意哪些事项?
注意:*没有返回值类型用void关键字来表示。
*return的后面直接用;号结束,return可以省略不写。
方法的特点:
1).定义方法可以将功能代码进行封装。
2).便于该功能进行复用。
3).方法只有被调用才会被执行。
4).方法的出现提高代码的复用性。
5).方法若没有返回值,则用关键字void表示,
那么该方法中的return语句如果在最后一行
可以省略不写。
6).方法中可以调用方法,不可以在方法内部定义方法。
7).定义方法时,方法的结果应返回给调用者,交由调用者来处理。
12.在定义方法时需要思考哪几点?分别是什么?
答:1).方法是否有返回结果,如果有,返回什么类型的结果?
2).明确方法是否需要参数,如果需要,需要几个什么类型的参数?
3).方法如何才能正确得到想要的结果?
13.什么是方法重载?举例说明
答:1).在Java中如果有多个同名但是不同参数的方法就称为“方法的重载”;
2).编译器会根据调用时传递的实际参数自动判断具体调用的是哪个重载方法;
例:/*add方法的重载*/
Int add(int x, int c){……}
Float add(float x, int c){……}
Double add(double x, double x){……}
Long add(int x, int x, int x){……}
14.什么是方法重载的三大原则?
答:1).方法名相同;
2).参数不同(三个方面:数量不同/类型不同/顺序不同);
3).同一作用域;
/*错误的方法重载*/
void fun(int x){……};
int fun(int x){……};
注意:方法重载跟方法的返回值类型没有任何关系。也就是说,只有返回值不同的方法不能构成重载。
15.什么是方法重载的作用域规则?
答:只有属于同一作用域范围内的方法才能构成重载。
例:class First class Second
{ {
…… ……
Public void show() public void show(int x)
{ {
…… ……
} }
…… ……
} }
**注意:请勿将功能完全不一样的方法进行重载!
16.为什么要使用构造方法?
答:1).要想使用Java类,必须创建类的对象,即对类进行实例化。而创建对象就必须使用构造方法。因此,构造方法几乎是一个类必有的元素。
2).构造方法的作用:用来对类进行实例化,及创建对象。
17.如何声明构造方法?举例说明
答:【访问权限修饰符】类名(形式参数列表){方法体}
例:public class Car {
private String color;
private double price;
public Car(){
}
Public Car(String color){
this.color = color;
}
Public Car(String color,double price){
this.color = color;
this.price = price;
}
}
18.构造方法与方法有什么区别?
答:*构造方法
1).是用在实例化对象的时候调用的
2).没有返回值,连void都没有
3).方法名必须与类名相同
4).不能使用修饰符,包括static、final、abstract
*方法
1).分静态方法和非静态方法
2).可以使用修饰符,包括static、final、abstract
3).静态方法可用类名直接调用,非静态方法要用对象调用(后续学习)
4).返回值可有可无,如果没有声明时要加void
5).方法名最好不跟类名一样
19.为什么创建了类后,不写构造方法,依然可以使用new进行实例化呢?
答:任何一个Java类都默认有一个无参构造方法。也就是说,即使类中没有声明无参的构造方法,照样可以直接使用没有参数的构造方法。
然而,只要在一个java类中定义了一个构造方法后,默认的无参构造方法即失效。
20.什么是方法重载?
答:在一个类中,如果有多个同名但是不同参的方法,称为“方法重载(overload)”。所谓不同参,可能是形式参数的个数不同,或者类型不同,顺序不同。方法重载能够增强程序的可读性。
21.为什么需要使用构造方法重载?
答:在实际开发中,初始化对象时会传不同的参数,因此需要在一个类中定义多个构造方法,即进行构造方法重载。
例:public Cars(String color){
this.color = color;
}
public Cars(String color, double price){
this.color = color;
this.price = price;
}
22.在使用构造方法重载时需要注意哪些事项?举例说明
答: 1).无参的构造方法,只有在该类没有声明任何构造方法的时候,才是默认存在的。
2).只要声明了其他带参的构造方法,无参的构造方法将不会默认存在,而是必须声明才可以使用。
例: public class Cars{
private String color;
private double price;
public Cars(String color){
this.color = color;
}
}
如上面所示,Cars类中不再有默认无参数构造方法,如果需要使用,必须显式声明无参构造方法。
23.如何创建对象?举例说明
答:使用new调用构造方法创建类的一个对象:
1).调用无参数的构造方法
类名 对象名 = new 该类的构造方法();
例:Book javaBook = new Book();
2).调用有参数的构造方法
类名 对象名 = new 该类的构造方法
(参数1,参数2,,…);
例:Book javaBook = new Book(1,“西游记”);
24.如何使用对象?举例说明
答:1).使用对象:使用“.”进行以下操作
*访问类的属性:对象名.属性
*调用类的方法:对象名.方法名()
例:javaBook.ISBN = “ISN8892”;//给属性赋值
System.out.println(javaBook.ISBN); //获取属性值
javaBook.borrow();
//调用类的方法,该方法中的操作将被执行
25.创建对象分为哪些步骤?都包含哪些内容?
答:1).假设存在一个类Person,创建对象语句如下所示
Person p = new Person();
2).将上面的语句分为两个步骤:
Person p;
P = new Person();
3).创建一个对象后,其实有两个实体:
*对象引用变量,在栈空间,即p,称为引用,或句柄,存的是对象的虚地址;
*对象本身,即使用new Person()在堆空间里
创建的实体,将对象的属性值存储到堆里;
*可以使用引用变量操作对象的属性和方法;
26.如何初始化并且创建对象?举例说明
答:package com.chinasofti.corejava.ch02;
Public class Cars{
Private String color;
Private double price;
Public Cars(String color,double price){
this.color = color;
this.price = price;
}
Public void setColor(String color){
this.color = color;
}
Public void setPrice(double price){
this.price = price;
}
public static void main(String[] args){
Cars car 1 = new Cars(“black”,60000);
Cars car 2 = new Cars(“red”,50000);
}
}
1).把Cars类的字节码加载到内存;
2).根据Cars类的声明,把属性color、price初始化到内存堆,并赋初值,分别为null和0.0;
3).根据代码,调用两个参数的构造方法,把black、60000赋值给color和price;
4).在栈中创建一个变量car1,用来引用堆中对象的具体属性,car1的值是一个16进制的数,表示一个虚地址;
5).重复2---4创建对象car2,car2与car1是不同的引用,指向不同的具体对象。也就是说,car1和car2分别引用不同的具体内容。
27.什么是块?有几种类型?
答:1).块在类中声明,类似一个没有方法声明的方法体,分为实例块和静态块;
2).*实例块:每次调用构造方法前自动调用
{
//任何符合语法的Java代码
}
*静态块:类加载时被调用一次,仅一次,与是否创建对象无关。(static相关内容后续学习)
static{
//任何符合语法的Java代码
}
28.什么是内部类?如何使用内部类?
答:1).内部类:在类的内部定义的类,不能在
方法内部定义;
2).内部类可以直接调用外部类的属性,往往在GUI编程中使用较多
Public class Outer{
Private int x;
class Inner{
public void test(){
x++;
}
}
}