java语言是一个面向对象的语言,c是一个面向过程的语言。
个人理解所谓面向对象,面向--对象,就是把要解决的事物问题分成各个对象,然后让对象去解决,简单的说就是把要解决的事物问题分成多个类,尽最大能力的分成多个类,分文别类,让每个类实现不同的功能及属性,然后可以实例化这个类,可以实例出多个对象,多次调用不同的属性及行为。面向--过程,针对的是实现的过程,可以说是把解决事物问题的步骤一步步去实现,个人理解,类中的方法实现可以说是一个面向过程,java的终极目标就是做到纯面向对象的语言,好处是当出现问题时,可以很准备的判断是哪个类出现了问题,方便修改,而不影响全局。面向对象其实就一种思想,它的出现,将复杂的问题简单化,让曾经在过程中的执行者,变成了对象中的指挥者。
import java.util.Arrays;//导入util.Arrays
public class Blog_2 {
public static void main(String[] args) {
int[] arr={11,0,-3,5,-7,10,23};
System.out.println(Arrays.toString(arr));//调用Arrays类中的toString(int[] a)方法,打印输出数组
Arrays.sort(arr);//调用Arrays.sort()方法,对数进行从小到大的排序
System.out.println(Arrays.toString(arr));//排序后的数组
}
}
输出结果:
原数组为: [11, 0, -3, 5, -7, 10, 23]
排序后的数组为:[-7, -3, 0, 5, 10, 11, 23]
上面就是利用面向对象的思想对数组进行从小到大的排序
........................................................................................................................................................................................
下面求这个数组中的最大值:
public class Blog_2 {
public static void main(String[] args) {
int[] arr={11,0,-3,5,-7,10,23};
int max=arr[0];//定义最大值为数组中的任意元素
for (int i = 0; i < arr.length; i++) {//遍历数组
max=max<arr[i]?arr[i]:max; //利用三元运算求最值
}
System.out.print(max);
}
}
输出结果:23
上面是求最大值的步骤,可以说是面向过程的思想来解决事物问题
........................................................................................................................................................................................ 由此可看出面向对象在解决事物问题时更方便快捷, 它的三大特性:封装,继承,多态
1.封装 谈到封装我们常常会想到箱子,容器,但在java中,封装是一个类中,加private对属性或方法进行封装后,然后对外提供set和get方法进行访问 ,封装了的属性和方法只能在本类的内部调用,而不能被类的外部调用
class Student{
private String name;//对name进行封装,
private int age;//对age进行封装
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {if(a>0)
this.age = age;
}
}
public class Blog_2 {
public static void main(String[] args) {
Student s=new Student();
s.setName("小明");//通过set对name进行设置
s.setAge(21);//通过set对age进行设置
String str= s.getName();//获取name
int a= s.getAge();//获取age
System.out.print(str+a);
}
}
输出结果:小明21................................................................................................................................................................................
封装也可对对象进行封装,例如单例设计模式
class Single{//
private static final Single s=new Single();//把对象进行封装
private Single(){}//同时把空参的构造函数封装
public static Single getInstance(){//对外提供一个获取该类对象的方法
return s;
}
}................................................................................................................................................................................
封装也可对一个类进行封装,例如内部类
2.继承 在java中通过继承可以简化类的定义,扩展类的功能,类的继承可以以既有的类为基础,又可以派生出新的类,提高了代码的复用性,用关键字extends实现类的继承
class Person{
String name;
int age;
public void talk(){
System.out.println("person...talk..."+name+age);
}
}
class Students extends Person{
String school;
}
public class ExtendsDemo {
public static void main(String[] args) {
Students s=new Students();
s.name="小明";
s.age=23;
s.school="北京";
s.talk();
System.out.print("姓名:"+s.name+",年龄:"+s.age+",学校:"+s.school);
}
}
输出:person...talk...小明23
姓名:小明,年龄:23,学校:北京子类继承父类,子类可调用父类的属性,也可继承父类的方法,会出现重载和覆写的情况,函数的重载是函数名相同,参数类型或参数个数不同,重载和覆写也可以作为多态的技术之一
................................................................................................................................................................................
3.多态
多态,顾名思义,是一种事物的多种表现形式,以继承或覆盖为前提,如果说是继承是子类调用父类,那么多态可以说是父类调用子类。
class Animals{
String name;
public void eat(){
System.out.print("animal...eat..");
}
}
class Cat extends Animals{
public void eat(){
System.out.print("cat...eat...fish");
}
}
public class AnimalCatDemo {
public static void main(String[] args) {
Animals al=new Cat();//向下强转
al.eat();
}
}输出:cat...eat...fish
Animals al=new Cat() 猫向上提升后动物类,