一、面向对象的三大特点是:封装、继承、多态。
二、各自具体的定义和示例:
1.封装 (encapsulation),隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别。将对象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
封装就是把类的一些信息隐藏起来,不允许外部程序直接访问,而是通过这个类提供的方法来实现对内部隐藏的信息的访问和操作。
封装的步骤
(1)把属性用private修饰符修饰,成员变量只能在当前类中访问
(2)设置public的setName和getName方法,供外部调用
(3)使用public的方法访问
示例:
public class first {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class one {
public static void main(String[] args) {
first p = new first();
p.setName("王二");
p.setAge(18);
System.out.println(p.getName());
System.out.println(p.getAge());
}
}
2. 继承(inheritance)是面向对象软件技术当中的一个概念。如果一个类别A“继承”另一个类别B,就把这个A称为“B的子类”,而把B称为“A的父类”。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。另外,为子类追加新的属性和方法也是常见的做法。 一般静态的面向对象编程语言,继承属于静态的,意即在子类的行为在编译期就已经决定,无法在执行期扩充。
总结:1、子类具有父类非private的属性和方法
2、子类可以扩展父类没有的属性和方法
3、子类可以重写父类的方法
继承的缺点:子类和父类具有强耦合性。
示例:
class A {
float computer(float x,float y) {
return x+y;
}
public int g(int x,int y) {
return x+y;
}
}
class B extends A {
float computer (float x,float y) {
return x*y;
}
}
public class one {
public static void main(String args[]) {
B b=new B();
double result=b.computer(8,9); //b调用重写的方法
System.out.println(result);
int m=b.g(12,8); //b调用继承的方法
System.out.println(m);
}
}
3.多态的定义:同一种操作对于不同的对象有着不同的定义,不同的解释,不同的执行结果。即同一个对象调用一个相同的方法得到不同的结果。
第一个特点:重载。
定义:在同一个类中方法名相同,参数列表不一样我们称之为重载。
特点:1.方法名必须相同
2.参数类型不同
3.参数个数不同
4.参数的顺序不能一样
5.返回值可以不相同
第二个特点:重写
定义 : 子类为了满足自己的需求而进行的相同方法的不同实现方式,进行方法的重写。
特点 :1.重写的方法必须是虚方法,要用override关键字。
2.重写的方法名必须相同。
3.重写的方法参数必须相同
4.重写的方法返回值必须相同
示例:
class 动物 {
void cry() {
}
}
class 狗 extends 动物 {
void cry() {
System.out.println("汪汪.....");
}
}
class 猫 extends 动物 {
void cry() {
System.out.println("喵喵.....");
}
}
public class Example5_11 {
public static void main(String args[]) {
动物 animal;
animal = new 狗();
animal.cry();
animal=new 猫();
animal.cry();
}
}