1.类和对象
类是一个模板,可以描述一类对象的行为和状态。
对象是类的一个实例,具有行为和状态。
1.1类
1.1.1声明格式
[标识符] class 类名{
//成员变量
//方法名
}
声明类需要使用关键字class,在class之后是类名。
标识符可以是public, private, protected或者省略。
1.1.2类的方法
类的方法有四要素:方法名称、返回值类型、参数、方法体。
定义一个方法的格式如下:
修饰符 返回值类型 方法名(参数列表)
{
//方法体
return 返回值;
}
修饰符:定义该方法的访问类型。
返回值类型:该方法的返回数据类型。
1.2对象
对象是根据类创建的,在java中,使用关键字new来创建一个新对象。
面向对象的核心就是对象,对象是类的实例化,由类产生对象的格式:
类名 对象名 = new 类名();
访问对象的成员变量或者方法格式为:
对象名.属性名 对象名.方法名()
1.3构造方法
在创建类的对象时,对类中的所有成员变量都需要初始化,初始化是通过构造方法实现的。
(1)构造方法与类同名
(2)构造方法不返回任何数据类型,也不需要void声明
(3)构造方法的作用是创建对象并初始化成员变量。
(4)创建对象时,会自动调用类的构造方法。
(5)构造方法一般使用public声明。
(6)每个类至少有一个构造方法。
类是对一个事物的描述,是抽象的,概念上的定义。对象是实际存在的事物中的个体。
1.4抽象类和抽象方法
在面向对象中,所有的对象都是通过类实现的,但并不是所有的类都能用来描绘对象。如果一个类
没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象方法是指一些只有方法声明,而没有具体方法体的方法,抽象方法一般存在于抽象类或者接口中。
1.4.1抽象类
原则:
(1)抽象方法必须为public或者protected,默认为public
(2)抽象类不能直接实例化,要依靠子类采用向上转型的方式处理。
(3)抽象类必须要有子类,用extends继承,一个子类只能继承一个抽象类。
(4)子类如果不是抽象类,则必须重写抽象类中的所有的抽象方法。
(5)抽象类不能用final声明因为抽象类必须要有子类,而用final修饰的类不能有子类。
注意:
(1)抽象类不能直接实例化,如果直接实例化会报错,只有抽象类的非抽象子类才能实例化。
(2)抽象类中不一定包含抽象方法,但是有抽象方法一定是抽象类。
(3)抽象类中的抽象方法只是声明,不包含方法体,也就是没有实现具体功能。
(4)构造方法,类方法(用static修饰的方法)不能声明为抽象方法。
(5)抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非抽象类的子类也是抽象类。
1.4.2抽象方法
(1)抽象方法的声明
abstract 返回类型 方法名(参数列表);
ps:抽象方法没有定义方法体,所以方法名后面直接跟一个分号,而不是花括号。
(2)抽象方法的实现
继承抽象类的子类必须重写所有父类的抽象方法,否则该子类也是抽象类。最终肯定有子类实现抽象方法,否则所有的类都不能用来实例化对象。
1.2 接口
接口在Java中是一个抽象类型,是抽象方法的集合。接口通常用interface来声明。一个类通过继承接口的方式来继承接口的抽象方法。
1.2.1接口的声明
interface 接口名 [extends 其他接口名]
{
//变量
//抽象方法
}
1.2.2接口的实现
当类实现接口时要实现接口中的所有方法,否则类必须声明为抽象类。类使用implments关键字实现接口。在类声明中,Implements关键字在class之后。
class 类名 implements 接口名[,其他接口]
1.2.3接口与抽象类的区别
相同点:
(1)都可以被继承
(2)都不能直接实例化
(3)都包含抽象方法
(4)派生类必须有实现抽象方法的方法
不同点:
(1)接口支持多继承,抽象类不能实现多继承
(2)一个类只能继承一个抽象类,但可以实现多个接口
(3)接口中的成员变量只能是public,static,final类型的,而抽象类中的成员变量可以是各种类型的。
(4)接口只能定义抽象方法,抽象类既有抽象方法也可以有实现了的方法。
(5)接口中不能有静态方法,抽象类中可以有静态方法。
**
相关试题
**
1.Java基本数据类型之间如何转换?
答:数据类型之间的转换有两种方式,一是自动转换,二是强制转换。
①自动转换:从存储范围较小的类型转到存储范围较大的类型,即byte(1)->short(2)(char)->int(4)->long(8)->float(4)->double(8)。
(1)存储范围小的类型自动转换为存储范围较大的类型。如byte类型的数据可以赋值给short,int,long类型的变量。
(2)存储范围较大的类型转换为较小范围时要加强制类型转换符。
(3)byte,char,short之间不会相互转换,三者计算时会先转化为Int型。
(4)实数常量默认为double型,整数默认为Int型。 ②强制类型转换:(type) value
2.谈谈你对面向对象的理解?
答:在Java语言中,把对象当作一种变量,不仅可以存储数据,还可以对自身进行操作。每个对象都有各自的属性和方法,Java就是通过对象之间的行为交互来解决问题的。
在我看来,面向对象就是把构成问题的所有事物分解为一个个对象,建立这些对象去描述事物在解决问题中的行为。类是面向对象中重要的一个部分,类是很多个具有相同属性和行为特征的对象所抽象出来的概念,对象是类的一个实例。
类具有三个特性,即封装,继承,多态。
(1)封装:将一类事物的属性和行为抽象为一个类,只提供符合开发者意愿的公有方法来访问这些数据,而隐藏具体实现步骤。
(2)继承:子类可以继承父类的属性和方法并进行拓展。
(3)多态:同一种类型的对象执行同一个方法时可以表现出不同的行为特征,通过继承,接口,以及方法的重写,重载可以实现多态。
3.Java中的访问修饰符有哪些?
答:Java中的访问修饰符主要有四种,分别为public,private,protected和default。
(1)public:公有的,用public修饰的类,属性,方法不仅可以跨类使用,而且可以跨包访问。
(2)private:私有的,用private修饰的类,属性以及方法只能被该类的对象访问,其子类不能访问,也不能跨包访问。
(3)protected:介于public与private之间的一种访问修饰符,可以被该类本身的方法以及子类访问,即使子类在不同的包中也可以访问。
(4)default:默认访问模式,只允许在同一个包中进行访问。
注意:protected修饰的类属于成员变量和方法,只可以被子类访问,而不管子类是不是与父类在同一个包里面。default修饰的只可以被同一个包里的其他类使用,不管是不是子类,但不能跨包访问。
4.什么是构造方法
答:构造方法是指定义在Java类中用于初始化对象的方法,通常使用"new 构造方法"来创建新对象。
构造方法名必须与类名一致,且构造方法无返回值类型不用void修饰,可以有参数也可以没有参数。
例Student s1; s1= new Student();
特点: (1)没有指定构造方法时,系统会自动添加无参的构造方法。
(2)构造方法可以重载:方法名相同但参数不同的多个方法,调用时会自动根据不同的参数调用相应的方法。
(3)构造方法不可以被继承。
(4)当手动指定了构造方法时,不论是有参还是无参,系统都不会自动添加无参的构造方法了。
(5)构造方法不但可以给对象的属性赋值,而且可以保证给对象的属性赋予一个合理的值。
(6)构造方法不能被static,final,abstract,native,synchronized修饰
5.重载与重写有什么区别?
答:
6.局部变量与成员变量有什么区别?
答:
7.解释一下break,continue,return的区别?
答:
8.基本数据类型有哪些?
答:
9.this的用法?
答:
10.接口与抽象类有什么区别?
答:
11.Java中是按值传递还是引用传递?
答:
12.什么是类的反射机制?
答:
13.Java创建对象的方式有哪几种?
答: